2
的XML的相关部分看起来像XML Twig不缩进新添加的元素?
<?xml version="1.0" encoding="UTF-8"?>
<key name="home">
<entry name="default">zzzzz</entry>
<key name="ffffff"></key>
<key name="plugin">
<key name="pst">
<entry name="enable">true</entry>
</key>
</key>
<key name="hover">
<key name="doze">
<key name="eventmanager">
<key name="types"></key>
</key>
<key name="ips">
<key name="proto">
<key name="dos">
<key name="dop"></key>
</key>
</key>
</key>
</key>
</key>
.
.
.
我的代码:
#!/root/bin/perl
use strict;
use warnings;
use XML::Twig;
my $tree = XML::Twig->new(pretty_print => 'indented', keep_spaces => 1);
$tree->parsefile(shift);
my $msg =<<'MSG';
<key name="absy">
<entry name="msg"></entry>
<entry name="title"></entry>
</key>
MSG
my $client_plugin = XML::Twig::Elt->new(key => { name => 'client' })->set_inner_xml($msg);
$client_plugin->paste(last_child => $tree->first_elt(sub { $_[0]->tag =~ m/key/ and $_[0]->att('name') =~ m/plugin/i }));
$tree->print;
的问题是,添加的元素出现在一个单行,并没有真正缩进喜欢的元素的其余部分。 我也试过$tree->print(pretty_print => 'indented')
没有运气。
更接近原代码,你也可以对属性值的正则表达式:'我的$插件= $树形> first_elt(“键[@ name =〜/ plugin/i]');' - 顺便说一句,这是一些严重丑陋的XML你在这里! – mirod 2013-03-12 17:30:41