我有两个系统,一个是 RHEL5,一个是 Ubuntu 10.04,它们表现出不同的行为。我正在使用 perl 的 XML::Simple 来解析对某些 SaaS 软件的调用的响应。响应是:
<xml answer="{"foo": "bar"}" />
ubuntu系统正确返回{"foo": "bar"},但是RHEL5系统将带引号的实体留在属性标记中,我似乎找不到更改此设置的选项。
是的,XML::Simple 版本略有不同(我无法更改这一点); RHEL5:2.14,Ubuntu:2.18。我很想解决这个问题,以便行为保持一致。
最佳答案
从返回的文件中删除 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 倍。
关于ajax - XML::Simple 在属性文本中保留实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9083722/