2

我有一个文件,其中依次包含几个 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);
    ...
}
4

3 回答 3

2

我所知道的 api 中没有任何内容可以在单个流中解析多个 xml 文档。我认为您将不得不自己扫描<?xml ...标签并拆分输入。解析器在读取标签之前不会知道它是否命中了下一个 xml 文档。到那时它会阻塞,并且下一个 xml 文档的开始标签已经被读取。

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

于 2011-06-12T06:22:31.067 回答
1

我不得不做这样的事情,我已经回答了(我自己)这里有一个 Reader 子类,它包装了所有内容以便更简单地使用。

于 2011-07-27T17:31:25.627 回答
0

通常<?在 XML 文件的开头检查序列,因为 XML 文件实际上必须以 xml 声明开头(不希望在文件中间出现 BOM)。所以我会看一下编码并按照每次出现时已经建议的那样分割文件,<?然后是“xml”......

于 2011-06-12T08:04:15.637 回答