【发布时间】:2015-10-16 12:17:17
【问题描述】:
我正在使用XML::Simple 和XML::Dumper。我很清楚围绕前一个模块的问题。如果我可以使用其他库,我会的。
我想要实现的是加载 XML,然后将行附加到它。这是我在脚本运行之前的 XML 结构。
<person>
<appearance>
<param name="height" value="6,3"/>
</appearence>
</person>
脚本,或者我打算编写的代码,应该从文件中加载这个 XML,然后将 <param> 元素附加到 <appearence> 上。我已经尝试使用此代码:
use warnings;
use XML::Simple;
use XML::Dumper;
my $xml = XMLin('xml_import.xml');
$xml->{appearence} .= qq{<param name="age" value="22" />};
my $new_xml = XMLout($xml, noattr => 1, NoEscape => 1);
open(FILE, ">xml_import.xml");
print FILE $new_xml;
close FILE;
不幸的是输出是这样的:
<opt>
<appearence>HASH(0x1722190)<param name="age" value="22" /></appearence>
</opt>
我不仅将原来的<person> 标签丢失为<opt>,而且HASH 字符串替换了我假设的现有<param> 元素。我已经阅读了XML::Simple 的文档,但我不知道应该使用什么参数来防止这种情况发生。
【问题讨论】:
-
我想不出为什么您无法使用更好的 XML 模块,除非有人挟持您的家人。你想解释一下这个问题吗?
-
不是特别的。在此问题中无法使用替代库的原因有很多。从什么时候开始,stackoverflow 成为了审讯网站?
-
注意:虽然 XML::Simple 在解析 XML 方面非常糟糕,但在编写 XML 方面却非常糟糕。它将生成与您读入的 XML 不同的 XML。避免使用这个已弃用的模块。
标签: xml perl xml-simple