33

我已经尝试过许多 Perl XML 解析器。我对 Sablotron Parser 很感兴趣,但是安装在 Windows 机器上实在是太痛苦了。目前我已经开始使用XML::LibXMLXML::LibXSLT两者似乎都能满足我的所有需求。

它们似乎也很标准。还有比这更好的 XML 解析器吗?

4

8 回答 8

25

我认为你正在使用一个非常好的。 XML::LibXML、Matt Sergeant 和 Christian Glahn 对 Daniel Velliard 的libxml2的 Perl 接口是我所知道的更快的 XML 解析器之一。

于 2009-01-28T10:57:48.920 回答
12

正如人们所说,这实际上取决于您的需求。为了解析大约 100Mb 大小的 XML 文件(来自TAIR的基因注释,每个染色体 1 个文件),我使用了 mirod 的XML::Twig模块,它允许您设置回调来解析您感兴趣的元素,将每个子文档显示为一个 XML::Simple 树。它结合了 SAX 解析器(将文件作为流扫描)和 DOM 解析器(更容易处理有趣的部分)的优点。

于 2009-06-18T15:37:23.833 回答
10

如果您需要速度、功能或特性,XML::LibXML 是您的不二之选。但是,如果您追求易用性,那么XML::Simple是一个可行的替代方案。

于 2009-01-28T13:45:16.787 回答
5

根据我的经验, XML::Simple最适合快速和肮脏的 XML 解析。我们使用它来解析来自第三方的数据,这些数据并不总是符合 XML 标准。XML::Simple 会引发信息性错误并让您以极快的​​速度运行。

于 2009-01-28T19:51:08.763 回答
5

(实际上这不是答案,而是评论 - 但是,我无法评论......)

XML::Simple 已在此处提及。
(我知道几年前很少,但今天谷歌出现了......)

但是,它的网站(http://metacpan.org/pod/XML::Simple)现在说:

本模块的状态

不鼓励在新代码中使用此模块。其他模块也可以提供更直接和一致的接口。特别是,强烈推荐使用 XML::LibXML。

这个模块的主要问题是大量的选项以及这些选项交互的任意方式——通常会产生意想不到的结果。

欢迎使用带有错误修复和文档修复的补丁,但不太可能添加新功能。

于 2013-04-14T13:23:47.697 回答
2

您还可以查看在下面使用 LibXML的XML::Liberal 。

于 2009-01-28T21:13:57.070 回答
1

我认为您也应该尝试一下XML::MyXML。它非常易于使用。

于 2013-04-06T23:22:37.447 回答
0

我将提供一个应该使用的:XML::Parser

它会自动将 HTML 实体扩展为其 UTF-8 等效项,并且禁用此行为的选项不适用于所有实体中最具特征的&.

此外,它的 XMLDecl 解析器会将块中的standalone属性解释并显示为,这是绝对不正确的——它应该是。<?xml ... ?>"standalone"="1""standalone"="yes"

于 2018-01-15T17:13:57.300 回答