2

我有一个这样的 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"};

这没有用。这段代码有什么问题?还有另一种方法可以做到这一点吗?

4

2 回答 2

6

正如 Jon 向您暗示的那样,您发布的代码中有语法错误。您应该看到如下编译错误:

测试第 18 行的语法错误,靠近“->set_att{” 由于编译错误,program.pl 的执行被中止。

但是,您可能已将代码输入到您的答案中,因此代码与您实际执行的操作不匹配。始终将实际代码放入您的问题中,而不是重新输入它,并尽可能发布完整的程序。当你发布你的程序时,我不必从头开始调试我认为你可能正在做的事情。:)

这是一个执行您想要的程序的程序:

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 );

$twig
    ->root
    ->last_child('CHILD_DATA')
    ->set_att("ATVAL" => "value2");

$twig->flush;
于 2009-08-12T08:52:28.107 回答
2

只是一些想法:

  1. 多次发布同一个问题不会让任何人喜欢帮助你。

  2. 您的代码甚至在语法上都不正确,所以我对您遇到问题并不感到惊讶。

  3. 为什么不包括您遇到的错误?也许这可能会阐明这个问题?

于 2009-08-12T06:32:49.450 回答