【问题标题】:Skip XML with StaX使用 StaX 跳过 XML
【发布时间】:2016-03-27 14:48:27
【问题描述】:

以下:

我将实时流数据写入 XML 文件,并希望稍后使用 StaX 对其进行解析。因为实时流数据有时非常频繁地出现,所以写入流过程有时会“吞噬”以(部分)格式错误的 XML 文件结尾的内容。

现在我在文件中的某个位置遇到解析错误。

有没有办法告诉 StaX 解析器跳过 XML 文件中格式错误的段落?是否可以向前推动光标,直到完成格式错误的部分? 当然,我也会研究写作算法,但我也需要一个强大的解析机制。

目前我使用 XMLStreamReader 进行解析。

谢谢 乔纳森

【问题讨论】:

  • 流式传输,您指的是连续的、永无止境的大型 XML,还是一长串的 xml 文档?

标签: java xml stax


【解决方案1】:

如何使用 stax 进行验证,但这只是一次通过,因为 Stax 不支持其他方式。

public class StaxValidationCheckDemo {

    public static void main (String args[]) throws Exception {

        XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream("myxml.xml"));

        SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = factory.newSchema(new File("myxml.xsd"));

        Validator validator = schema.newValidator();
        validator.validate(new StAXSource(reader));

        //its valid if there are no error or no exception thrown else invalid

    }
}

【讨论】:

  • 您好,谢谢。我已经考虑过验证,但实际上这不是我需要的。我想更多关于'code'之类的东西 while(parser.next()){ try{ //parse } catch(ParsingException) { //skip } } 'code' 如果没有办法使用 Stax 一些其他建议如何不预加载全部处理它?
  • 我的理解是 Stax 支持一次性解析,您可能需要重新访问您选择的库..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2016-03-10
  • 2011-02-26
  • 2011-06-06
  • 2012-03-20
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多