Mik*_*lls 9 xml linux perl centos
我想知道在我的Perl情况下哪个XML解析器的人最好.我做了很多阅读,并尝试了XML::LibXML和XML::SAX.第一个耗尽了太多的内存而第二个对我来说似乎并不那么快(即使在关闭纯perl解析器之后).
我的需求非常具体.我通过Net::SSH图书馆收到了高达50MB的大回复.我希望在收到数据时将此数据传递给XML库,以便将最少量的数据保存在内存中.然后我需要在某些标签中查找数据并对其执行任何操作,在某些情况下总和一堆值,在其他情况下只需提取值并将它们写入文件或其他任何内容.所以我需要一个可以串行工作,快速工作并使用最少内存的XML解析器.我得到的数据是最多1024字节的块,所以我希望能够做类似的事情$myparser->sendData($mynewData),然后在打开或关闭新标签时调用函数XML::SAX.
我不一定需要XPath或XSLT.
您也可以使用普通的 old XML::Parser,它几乎可以满足您的要求:
“该模块提供了解析 XML 文档的方法。它构建在 XML::Parser::Expat 之上,XML::Parser::Expat 是 James Clark 的 expat 库的较低级别接口。每次调用解析方法之一都会创建一个新的 XML 实例::Parser::Expat 然后用于解析文档。创建 XML::Parser 对象时可以提供 Expat 选项。然后这些选项在每次解析调用时传递给 Expat 对象。它们也可以给出作为解析方法的额外参数,在这种情况下,它们会覆盖 XML::Parser 创建时给出的选项。”
“Expat 是一个基于事件的解析器。当解析器识别文档的某些部分(例如 XML 元素的开始或结束标记)时,就会使用合适的参数调用为该类型事件注册的任何处理程序。”
我用它来解析Wikipedia XML 转储,即使在压缩后,转储的大小也有几 GB,并且发现它对此非常有效。相比之下,50 MB 的文件应该是小菜一碟。