【问题标题】:Processing a large xml file with perl用 perl 处理一个大的 xml 文件
【发布时间】:2011-02-15 16:30:04
【问题描述】:

我有一个大小约为 200MB 的 XML 文件,我希望逐行提取选定的信息。

我用 perl 编写了一个脚本,使用模块 XML::LibXML 来解析文件内容,然后循环内容并逐行提取信息。这是无效的,因为它将整个文件读入内存,但我喜欢 LibXML,因为我可以使用所需信息的 XPath 位置。

我能否获得有关如何使我的代码更有效的建议。

通过搜索,我了解到 XML::SAX 和 XML::LibXML::SAX,但我找不到解释其用法的文档,而且它们似乎不包含任何类型的 XPath 寻址结构。

【问题讨论】:

标签: xml perl sax libxml2


【解决方案1】:

您是否考虑过XML::Twig 模块,它在处理大文件时效率更高,正如CPAN 模块描述中所述:

名字

XML::Twig - 一个 perl 模块 处理巨大的 XML 文档 树模式。

概要

...

它允许最少的资源(CPU 和 内存)通过构建树来使用 仅适用于文件的部分 需要实际处理的,通过 twig_roots 的使用和 twig_print_outside_roots 选项。

...

【讨论】:

  • 感谢您为我指明了这个方向,到目前为止,我的调查显示出积极的结果
【解决方案2】:

我在XML::Twig 上遇到了一些运气,但最终得到了更快的XML::LibXML::Reader...如果您需要使用 XPath,也可以查看XML::LibXML::Pattern

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2013-06-24
    • 1970-01-01
    • 2018-05-02
    相关资源
    最近更新 更多