我的XML文件是这样的:
<root>
<node1>
<texts>
<text>
<type>type1</type>
<pro1>IN</pro1>
<pro2>ES</pro2>
<finalText><![CDATA[XXXXXXXXXX]]></finalText>
</text>
</texts>
<node1>
<root>
我想复制&#34;文字&#34;每个&#34; pro1&#34;的节点和&#34; pro2&#34;节点。 我试图反序列化但没有成功。我怎样才能做到这一点? 输出应该是这样的:
<root>
<node1>
<texts>
<text>
<type>type1</type>
<pro1>IN</pro1>
<finalText><![CDATA[XXXXXXXXXX]]></finalText>
</text>
<text>
<type>type1</type>
<pro2>ES</pro2>
<finalText><![CDATA[XXXXXXXXXX]]></finalText>
</text>
</texts>
<node1>
<root>
答案 0 :(得分:0)
使用xsh,XML::LibXML的包装:
open file.xml ;
for my $pro in /root/node1/texts/text/*[xsh:matches(name(), '^pro\d+$')] {
$new := cp $pro/../self::text before $pro/.. ;
rm $new/*[xsh:matches(name(), '^pro\d+$')][name() != name($pro)] ;
}
rm /root/node1/texts/text[last()] ;
save :b;