我尝试过很多Perl XML Parsers。我对Sablotron Parser很感兴趣,但安装在Windows机箱上真是太痛苦了。目前我已经开始使用XML::LibXML和XML::LibXSLT两者似乎都做了我需要的一切。
它们似乎也很标准。是否有比这更好的XML解析器?
答案 0 :(得分:24)
我认为你使用的非常好。 XML::LibXML,Matt Sergeant和Christian Glahn与Daniel Velliard的libxml2的Perl界面是我所知道的更快的XML解析器之一。
答案 1 :(得分:12)
正如人们所说,这实际上取决于你的需求。为了解析大小约为100Mb的XML文件(来自TAIR的基因注释,每个染色体1个文件),我使用了mirod的XML::Twig模块,它允许你设置回调来解析你感兴趣的元素,呈现每个子文档都是XML :: Simple树。它结合了SAX解析器(将文件作为流扫描)与DOM解析器(使用有趣的部分更轻松地工作)的好处。
答案 2 :(得分:10)
如果您需要速度,功能或功能,XML :: LibXML就是您的选择。但是,如果你的易用性,XML::Simple是一个可行的选择。
答案 3 :(得分:5)
根据我的经验XML::Simple最适合快速和脏的XML解析。我们使用它来解析来自第三方的数据,这些数据并不总是符合XML标准。 XML :: Simple会引发信息性错误,并使您非常快速地运行。
答案 4 :(得分:4)
(实际上这不是答案,而是评论 - 但是,我无法发表评论......)
这里提到了XML :: Simple。
(我知道几年前它很少,但今天出现在谷歌......)
然而,它的网站(http://metacpan.org/pod/XML::Simple)现在说:
本模块的状态
不鼓励在新代码中使用此模块。其他模块可用,提供更直接和一致的接口。特别强烈建议使用XML :: LibXML。
此模块的主要问题是大量选项以及这些选项交互的任意方式 - 通常会产生意外结果。
欢迎使用包含错误修复和文档修补程序的修补程序,但不太可能添加新功能。
答案 5 :(得分:2)
您还可以查看下面使用LibXML的XML::Liberal。
答案 6 :(得分:1)
我认为你也应该试试XML::MyXML。这很容易使用。
答案 7 :(得分:0)
我会提供一个不应该使用的人:XML::Parser。
它会自动将HTML实体扩展为其等效的UTF-8,并且禁用此行为的选项不适用于所有实体DataFrames
的最大特征。
此外,它的XMLDecl-parser会将&
块中的standalone
属性解释并显示为<?xml ... ?>
,这绝对不正确 - 它应该是"standalone"="1"
。