如何创建一个可以在发生“致命”错误时继续运行的XMLStreamReader?

时间:2011-08-24 03:51:08

标签: java xml-parsing

我需要寻找一个巨大的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解析器可以配置为忽略错误并继续阅读?

0 个答案:

没有答案