Java XML 解析

标签 java xml partial bytebuffer filechannel

我有一个文件,其中按顺序包含多个 XML 文档,如下所示。

<?xml version="1.0"?><Node>...<Node>...</Node>...</Node><?xml version...

重复多次。

我使用Java,我为文件打开了一个FileChannel,并且有一个字节缓冲区可供读取。如果有一种内置方法、更简单的方法或已经解决的方法来使用 Java 对 XML 字节进行部分解析,我将不胜感激。例如这样:

FooParser parser = new FooParser();

while (...)
{
    buffer.flip();
    parser.parse(buffer);
    buffer.compact();
    if (parser.done())
    {
        xmlDocs.add(parser.xml());
        parser.reset();
    }
    file.read(buffer);
    ...
}

最佳答案

据我所知,API 中没有任何内容可以在单个流中解析多个 xml 文档。我想你必须扫描 <?xml ...标记自己并分割输入。解析器在读取标签之前不会知道它已命中下一个 xml 文档。此时它将被阻塞,并且下一个 xml 文档的开始标记将已被读取。

实际上,既然你提到了它,你也许可以使用拉解析器来完成你想要的事情。但我很确定 api 中的 SAX 和 DOM 解析器不会执行您想要的操作。

关于Java XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320438/

相关文章:

python - 当使用 XPath 选择另一个节点时,如何引用当前节点的子节点的值? (DDEX相关)

java - 我可以将 C++ 代码与 JAVA 代码一起使用吗?

java - 有什么办法可以连接两个 channel 吗?

java - RESTful Java 客户端将 JSON 响应转换为对象

xml - 为什么这个 XPath 表达式在 xmlstarlet 中没有返回正确的值?

java - Java 中 xPath-Object 或 Document-Object 的文件路径

java - Android 上的渐进式图像加载

ruby-on-rails - 部分引用其他部分的相对路径

asp.net-mvc - ASP MVC 以 JSON 格式查看内容

java - 调用方法并引用数组