我有一个大约200MB的
XML文件,我希望逐行提取所选信息.
我用perl编写了一个脚本,使用模块XML :: LibXML解析文件内容,然后循环内容并逐行提取信息.这是无效的,因为它将整个文件读入内存,但我喜欢LibXML,因为我可以使用我需要的信息的XPath位置.
我可以获得有关如何使我的代码更有效的建议.
通过搜索我已经知道XML :: SAX和XML :: LibXML :: SAX,但我找不到解释用法的文档,它们似乎不包括任何类型的XPath寻址结构.
解决方法
您是否考虑过
XML::Twig模块,它对于大型文件处理更有效,正如它在
CPAN模块描述中所述:
XML::Twig – A perl module for
processing huge XML documents in
tree mode.
概要
…
It allows minimal resource (cpu and
memory) usage by building the tree
only for the parts of the documents
that need actual processing,through
the use of the twig_roots and
twig_print_outside_roots options.…