我有一个文件,其中按顺序包含多个 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/