使用perl处理大型xml文件

fir*_*r3x 6 xml perl sax libxml2

我有一个大约200MB的XML文件,我希望逐行提取所选信息.

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

我可以获得有关如何使我的代码更有效的建议.

通过搜索我已经知道XML :: SAX和XML :: LibXML :: SAX,但我找不到解释用法的文档,它们似乎不包括任何类型的XPath寻址结构.

Mic*_*eyn 15

您是否考虑过XML :: Twig模块,它对于大型文件处理更有效,因为它在CPAN模块描述中说明:

名称

XML :: Twig - 用于以树模式处理大型XML文档的 perl模块.

概要

...

它通过使用twig_roots和twig_print_outside_roots选项,仅为需要实际处理的文档部分构建树,从而允许最少的资源(CPU和内存)使用.

...