2

我有两个系统,一个 RHEL5 和一个 Ubuntu 10.04,它们表现出不同的行为。我正在使用 perl 的 XML::Simple 来解析对某些 SaaS 软件的调用响应。回应是:

    <xml answer="{&quot;foo&quot;: &quot;bar&quot;}" />

ubuntu 系统正确返回 {"foo": "bar"},但 RHEL5 系统将引用的实体留在属性标记中,我似乎找不到更改此选项的选项。

是的,XML::Simple 版本略有不同(我无法更改);RHEL5:2.14,Ubuntu:2.18。我很想解决这个问题,以便行为是一致的。

4

1 回答 1

3

从返回的文件中删除 XML::SAX::PurePerl 部分

perl -MFile::Basename -E'say dirname($ARGV[0])."/SAX/ParserDetails.ini"' "`perldoc -l XML::SAX`"

模块太烂了!

  • 它很慢。我的意思是疯狂的慢。
  • 它不能正确处理编码。
  • 显然,它也不能正确处理实体。

如果您想从 XML::Simple 获得最佳性能,请务必使用

local $XML::Simple::PREFERRED_PARSER = 'XML::Parser';

警告:XML::Parser 不处理名称空间。

注意:XML::LibXML 仍然比使用 XML::Parser 的 XML::Simple 快 17 倍。

于 2012-01-31T20:26:34.813 回答