2013-03-23 3 views
0

전체 XML 파일 대신 특정 노드를 저장하려고하는데 오류가 발생합니다.특정 노드 만 출력 PHP XML

잡아낼 치명적인 오류 :있는 DOMDocument :: saveXML (에 전달 된 인수 1) 31

나는 운명 다음있어 DOMNode, 라인에서의 PHP \의 corrdination.php에 주어진 DOMNodeList의 인스턴스의 인스턴스 여야합니다 문서하지만 새 요소를 만들지 않고 이미 만든 xml 파일에서 읽기만하므로 새 요소를 만드는 작업을하지 않아도됩니다.

내 라인 (31)은

$resultX = $xpath->query('/stickers/sticker[id="200"]/position/x'); 

이다 그리고 메신저 내가 쓰기 만 변경된 노드를 저장하려고 할 때.

echo $xml->saveXML($resultX); 

어떻게해야합니까? 이것은 내 전체 PHP 파일입니다. 난 단지 echo $xml->saveXML(); 쿼리가 말했듯하지만 작동하는 경우

$xml = new DOMDocument(); 
    $xml->formatOutput = TRUE; 
    $xml->preserveWhiteSpace = FALSE; 
    $xml->load('../stickers.xml'); 

    $xpath = new DOMXPath($xml); 
    $resultX = $xpath->query('/stickers/sticker[id="200"]/position/x'); 
    $resultX->item(0)->nodeValue = "150"; 
echo $xml->saveXML($resultX); 

, 그것은 전체 노드 구조를 저장합니다.

XML 파일 :

<stickers> 
    <sticker> 
    <position> 
     <x>0</x> 
    </position> 
    <text>Hello world </text> 
    <id>200</id> 
    </sticker> 
</stickers> 

감사

+1

오류는'있는 DOMDocument :: saveXML()'에'DOMNode'을 통과해야했다. 그래서'saveXML ($ resultX)'를'saveXML ($ resultX-> item (0))'으로 변경해야할까요? – lazyhammer

+0

그랬 으면, 대답으로 쓸 수 있도록 받아 들여야합니다 :) 내 친구 고맙습니다. – Dymond

답변

2

오류는 DOMDocument::saveXML()DOMNode을 통과해야했다. 그래서이 줄을 변경해야합니다 이것에

echo $xml->saveXML($resultX); 

:

echo $xml->saveXML($resultX->item(0));