我已經嘗試了幾種不同的解析XML文檔的方法。我需要在文檔中找到具有x
屬性的節點,然後將該節點及其子節點移動到不同的父節點。如何使用Perl移動XML數據中的節點
我已經有一些成功的使用XML::LibXML
定位節點,並能夠遍歷它的孩子,但我堅持如何將其移動到不同的父。
使用$node->cloneNode(1)
看起來很有希望,但我找不到它的使用的好例子。
這是原始的XML數據
<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">
<old>
<server name="sahara" osname="solaris" osversion="2.6">
<address ip="10.0.0.101">Private</address>
<address ip="10.0.1.101">Private</address>
</server>
<server name="gobi" osname="irix" osversion="6.5">
<address ip="10.0.0.102">Private</address>
</server>
<server name="kalahari" osname="linux" osversion="2.0.34">
<address ip="10.0.0.103">Private</address>
<address ip="10.0.1.103">Private</address>
</server>
</old>
<new>
</new>
</config>
,這是結果,我想
<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">
<old>
<server name="sahara" osname="solaris" osversion="2.6">
<address ip="10.0.0.101">Private</address>
<address ip="10.0.1.101">Private</address>
</server>
<server name="gobi" osname="irix" osversion="6.5">
<address ip="10.0.0.102">Private</address>
</server>
</old>
<new>
<server name="kalahari" osname="linux" osversion="2.0.34">
<address ip="10.0.0.103">Private</address>
<address ip="10.0.1.103">Private</address>
</server>
</new>
</config>
你說的*。* 「與 'X' 屬性的節點」 是什麼意思?你是說你想移動'''屬性'kalahari'的'server'元素嗎? – Borodin 2014-10-30 20:40:27
請顯示您試過的Perl代碼 – Borodin 2014-10-30 20:41:30
非常好。太棒了。謝謝你們倆!是的,鮑羅廷,如在這個例子中,匹配一些屬性,如名稱或IP。我沒有移動示例代碼,因爲我不知道從哪裏開始:/我肯定可以用這個來運行。再次感謝! – 2014-10-31 10:57:07