2013-03-23 109 views
0

我試圖保存一個特定的節點,而不是完整的XML文件,但我得到錯誤。只輸出特定的節點PHP XML

開捕致命錯誤:傳遞給DOM文檔:: saveXML(參數1)必須是31

我正在關注的厄運的DOMNode,DOMNodeList之後的實例在PHP \ corrdination.php給定線的一個實例文檔,但由於我不創建新的元素,只能從已經創建的XML文件中讀取,它不會用於創建新的元素。

我行31

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

當我嘗試只保存更改的節點我寫。

echo $xml->saveXML($resultX); 

有關如何做的建議? 這是我的整個php文件。

$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); 

如果我只echo $xml->saveXML(); 查詢工作,但正如我所說,這樣可以節省整個節點結構。

XML文件:

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

感謝

+1

錯誤說你要通過'DOMNode'到'DOM文檔:: saveXML()'。所以也許你需要將'saveXML($ resultX)'改成'saveXML($ resultX-> item(0))'? – lazyhammer 2013-03-23 12:10:45

+0

這樣做,你應該寫它作爲答案,所以我可以接受它:) 謝謝你,我的朋友 – Dymond 2013-03-23 12:19:02

回答

2

錯誤說你要通過DOMNodeDOMDocument::saveXML()。所以,你需要改變這一行:

echo $xml->saveXML($resultX); 

這樣:

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