我正在使用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
但我不知道应该使用什么参数来防止这种情况发生。