我在变量$ myXML中将以下xml作为字符串,需要将其插入root->分组
<mydata seq="ee">
<subdata name="bla" value="bla" />
</mydata>
上面的xml需要插入root-&gt;分组
<root>
<grouping>
</grouping>
</root>
我目前正在使用XML :: Twig,理想情况下,如果你可以帮我使用
修改 我正在处理一个复杂的&lt; root&gt;驻留在文件中的结构。我需要一种方法来加载&lt; root&gt;将xml插入perl并将我的xml字符串作为节点插入。在我的情况下&lt;分组&gt;已经有一些节点。
答案 0 :(得分:3)
我会这样做:我会在$myXML
中的XML中创建一个元素,然后将其添加为grouping
的最后一个孩子:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $myXML='<mydata seq="ee"><subdata name="bla" value="bla" /></mydata>';
my $t= XML::Twig->new( twig_handlers => { grouping => sub { grouping( $myXML, @_); }, })
->parsefile( "so_insert.xml");
$t->print;
exit;
sub grouping
{ my( $xml, $t, $grouping)= @_;
my $new_elt= XML::Twig::Elt->parse( $xml);
$new_elt->paste( last_child => $grouping);
}
答案 1 :(得分:2)
使用twig处理程序在看到分组标记时插入内容。
假设您的根/分组数据位于foo.xml
:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $myXML = <<'EOT';
<mydata seq="ee">
<subdata name="bla" value="bla" />
</mydata>
EOT
my $xml = XML::Twig->new(
pretty_print => 'indented',
twig_handlers => {
grouping => sub { $_->set_text($myXML)->set_asis; }
});
$xml->parsefile("foo.xml") or die "Failed parse of foo.xml: $@\n";
$xml->print;
答案 2 :(得分:0)
我错过了什么吗?
$myXML = '<root><grouping>' . $myXML . '</grouping></root>';