Perl XML:DOM :: Parser NoExpand仍在扩展实体

时间:2013-11-18 16:43:26

标签: xml perl xml-parsing

我正在使用XML::DOM::Parser库来读取XML文件,进行一些小的调整并再次将其转储回来。文件中有一些编码实体,我想以编码形式保存它们。我已经尝试使用NoExpand选项进行解析,但它似乎仍然在扩展实体。以下是该问题的最小示例:

use XML::DOM;
my $parser = new XML::DOM::Parser(NoExpand => 1);
my $doc = $parser->parse('<?xml version="1.0" encoding="UTF-8"?><MyTest Content="&#13;"/>');
print $doc->toString;

输出如下(注意实体已扩展):

<?xml version="1.0" encoding="UTF-8"?><MyTest Content="^M"/>

我正在使用ActiveState Perl 5.16.3.1603和XML :: DOM 1.44以及XML :: Parser 2.41

有没有办法让NoExpand不能扩展,我错过了?

1 个答案:

答案 0 :(得分:1)

这需要一些文档潜水。正如您在XML::DOM::Parser的文档中看到的那样:

或多或少支持 XML :: Parser NoExpand选项

查看XML::Parser

的相关文档

如果尚未注册默认处理程序,则此操作无效,并且对实体引用内部属性值的扩展没有影响。

因此,如果此解析器中的此功能完全适合您,则它不适用于属性值。如果这对你真的很重要:

  • 尝试使用其他XML解析器
  • 使用XML :: Parser的作者Enno Derksen提交错误或补丁。