【问题标题】:Big Data, How to parse a huge xml file faster?大数据,如何更快地解析巨大的 xml 文件?
【发布时间】:2016-06-11 18:09:34
【问题描述】:

我在xml format 中有大量的圣经数据。我正在制作一个安卓圣经应用程序。但我觉得我的数据非常庞大。

在我的研究中,我读到 xml 解析器会解析整个文件,直到获得所需的标记。有谁知道解析所有数据的更简单快捷的方法。

【问题讨论】:

  • 分块解析? IE。如果您必须预订标签,跳过其他标签,然后从那里解析?
  • @SQLiteNoob 感谢您的快速回复。你能告诉我使用哪种方法吗?
  • 我认为关键问题是:你想对数据做什么?解析只是达到目的的一种手段。

标签: android xml parsing xml-parsing bigdata


【解决方案1】:

当数据提取逻辑相对简单且仅转发时,SAX 解析可能是合适的...如果您希望轻松舒适地遍历分层结构或 XPath,那么您就不走运了...

JDOM 或 DOM 存在严重的内存使用问题...

VTD-XML 是一个库,它涵盖的用例对于 SAX StAX 来说过于复杂,而对于 DOM 或 JDOM 来说过于占用内存。

虽然 VTD-XML 将所有内容加载到内存中,但内存占用量是 XML 文档大小的 1.3x~1.5x,比 DOM 效率高 3~5x..

它还可以导出类似游标 API 的 DOM 并支持 XPath 1.0...

Can SAX Parsers use XPath in Java?

【讨论】:

    【解决方案2】:

    您应该使用 SAX 解析器,它是解析大型 XML 文件的最佳方式。例如,您可以这样做:

             File inputFile = new File("input.txt");
             SAXParserFactory factory = SAXParserFactory.newInstance();
             SAXParser saxParser = factory.newSAXParser();
             UserHandler userhandler = new UserHandler();
             saxParser.parse(inputFile, userhandler);
    

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多