2016-08-17 6 views
0

私のXMLファイルは、このようなものです:デシリアライズのXMLノードと同じXMLファイルに配置

<root> 
    <node1> 
     <texts> 
       <text> 
        <type>type1</type> 
        <pro1>IN</pro1> 
        <pro2>ES</pro2> 
        <finalText><![CDATA[XXXXXXXXXX]]></finalText> 
      </text>   
    </texts> 
<node1> 
<root> 

私はすべての「PRO1」の「テキスト」ノードと「PRO2」ノードを複製します。 デシリアライズしようとしましたが、成功しませんでした。どうすればこれを達成できますか? 出力は次のようにする必要があります:

xshXML::LibXMLのラッパーを使用して
<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

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; 
関連する問題