2010-08-01 49 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