我有一个像这样的XML字符串:
<DATA>
<CHILD_DATA ATVAL="value1"/>
<CHILD_DATA />
</DATA>
Run Code Online (Sandbox Code Playgroud)
我想要的最终输出是:
<DATA>
<CHILD_DATA ATVAL="value1"/>
<CHILD_DATA ATVAL="value2"/>
</DATA>
Run Code Online (Sandbox Code Playgroud)
我的树枝$t在<DATA>.现在我想为第二个添加一个属性<CHILD_DATA />.属性是ATVAL="value2".我尝试了以下方法:
$t->last_child('CHILD_DATA')->set_att{"ATVAL","value2"};
Run Code Online (Sandbox Code Playgroud)
这没用.这段代码出了什么问题?还有另一种方法吗?
正如Jon向您暗示的那样,您发布的代码中存在语法错误.你应该看到一个编译错误,如:
测试行18处的语法错误,接近" - > set_att {"程序.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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |