2010-08-01 46 views
2

我有一個類裏面的下面的代碼:更新與PHP的SimpleXML節點值和XPath不工作

$tmp= $this->Xml->xpath("/page/text[@id='$this->Id']"); 
$tmp[0]= $this->Text; 
echo $tmp[0]; 
echo $this->Xml->asXml(); 
$this->Xml->asXML($this->FileName); //save XML 

問題是「回聲$ TMP [0]」打印更新的案文,而$這個 - > Xml-> asXml()仍包含舊節點值。在這個網站上搜索我發現這是更新整個XML樹的正確方法,但這仍然不起作用。 有什麼想法?

感謝

回答

0
list(, $node) = each($tmp); 
$node->asXML($this->FileName); 
+0

爲什麼要這樣工作? – Mokuchan 2010-08-01 18:19:14

1

沒有找到更好的辦法不止這一個:

$dom=dom_import_simplexml($xml_element); // $xml_element - in your case is $tmp[0] 
$dom->nodeValue = "new value"; 
12

PHP的文檔都在這方面的一個例子的迫切需要...答案似乎是:

$tmp = $this->Xml->xpath("/page/text[@id='$this->Id']"); 
$tmp[0][0] = $this->Text; 
echo $tmp[0][0]; 
echo $this->Xml->asXml(); 
$this->Xml->asXML($this->FileName); //save XML 

似乎你需要引用節點的第一個孩子,這將是文本(我假設這是怎麼回事) 。

注意第二個括號$tmp[0][0]

+0

真棒,作品! – Thasmo 2013-11-07 19:43:55