我需要寻找一个巨大的XML文件,从字节位置开始读取XML数据,基本上是读取一个块。我正在创建这样的XMLStreamReader
:
final XMLInputFactory factory = XMLInputFactory.newInstance();
reader = factory.createXMLStreamReader(inputStream);
这个阅读器可以开始在流中的任何位置读取,但是我希望它在找到标记的开头之前跳过它们。我不希望它验证任何东西。
例如,它可以在firstAttr
:
rstAttr='12345' secondAttr='QWERTY'>
</endElement>
<startReadingAtLeastFromHere>
...
我真的不需要阅读</endElement>
,但我希望解析器至少阅读<startReadingAtLeastFromHere>
以及之后的所有内容。
我的问题是factory.setXMLReporter(reporter)
没有被调用,所以我不能用它来告诉读者继续。
我现在没有指定javax.xml.stream.XMLInputFactory
系统属性,默认为Sun的XMLInputFactoryImpl
。它使用StaxErrorReporter
,其中包含一个名为fContinueAfterFatalError
的字段,但我找不到如何更改其值,或者如何将StaxErrorReporter
替换为我自己的值。
如果这太棘手了,是否有任何基于拉的XML解析器可以配置为忽略错误并继续阅读?