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>
이며, 이것은 내가
XML::LibXML
를 사용
<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'속성을 가진 노드"* 무엇을 의미합니까? 'name' 속성이'kalahari' 인'server' 엘리먼트를 옮기고 싶다는 말입니까? – Borodin
시도한 Perl 코드를 보여주십시오. – Borodin
우수. 이것은 완벽 해. 둘 다 감사합니다! 예 Borodin은이 예에서와 같이 name 또는 ip와 같은 일부 속성과 일치합니다. 어디서부터 시작해야할지 모르겠으므로 이동을위한 예제 코드가 없습니다./이걸로 확실히 실행할 수 있습니다. 다시 한 번 감사드립니다! –