我正在使用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=" "/>');
print $doc->toString;
输出如下(注意实体已扩展):
<?xml version="1.0" encoding="UTF-8"?><MyTest Content="^M"/>
我使用的是带有XML::DOM 1.44和XML::Parser 2.41 的ActiveState Perl 5.16.3.1603
有没有什么方法可以让NoExpand
不扩展我错过的内容?
这需要一些文档挖掘。正如您在XML::DOM::Parser:的文档中看到的那样
XML::Parser NoExpand选项或多或少支持
查看XML::Parser 的相关文档
如果未注册默认处理程序,则此操作无效,并且对属性值内部实体引用的扩展也没有影响。
因此,如果这个解析器中的这个特性对您有用,那么它对属性值就不起作用。如果它真的对你很重要:
- 尝试其他XML解析器
- 向XML::Parser的作者Enno Derksen提交一个bug或补丁