我有一个像这样的XML字符串:
<DATA>
<CHILD_DATA ATVAL="value1"/>
<CHILD_DATA />
</DATA>
我想要的最终输出是:
<DATA>
<CHILD_DATA ATVAL="value1"/>
<CHILD_DATA ATVAL="value2"/>
</DATA>
我的树枝$t
位于<DATA>
。现在我想为第二个<CHILD_DATA />
添加一个属性。该属性为ATVAL="value2"
。我尝试了以下方法:
$t->last_child('CHILD_DATA')->set_att{"ATVAL","value2"};
这不起作用。这段代码出了什么问题?还有另一种方法吗?
答案 0 :(得分:6)
正如Jon向您暗示的那样,您发布的代码中存在语法错误。你应该看到一个编译错误,如:
测试线18处的语法错误,靠近“ - &gt; set_att {” 由于编译错误,program.pl的执行中止。
但是,您可能已将代码输入到答案中,以便代码与您实际执行的操作不匹配。始终将实际代码放入您的问题而不是重新输入,并始终发布完整的程序。当您发布程序时,我不必从头开始调试我认为您可能正在做的事情。 :)
这是一个完成你想要的程序:
#!/usr/bin/perl
use XML::Twig;
my $xml = <<'XML';
<DATA>
<CHILD_DATA ATVAL="value1"/>
<CHILD_DATA />
</DATA>
XML
my $twig= XML::Twig->new( keep_spaces => 1 );
$twig->parse( $xml );
$t = $twig->root;
$t->last_child('CHILD_DATA')->set_att("ATVAL" => "value2");
$twig->flush;
答案 1 :(得分:2)
只是一些想法:
发布多个相同的问题 时代不会让任何人都喜欢 帮助你。
您的代码甚至不是语法上的 是的,所以我并不感到惊讶 遇到问题。
为什么不包含您的错误 得到些什么?也许这可能会有所减少 关于这个问题?