使用PHP的simpleXML和xpath更新节点值不起作用

时间:2010-08-01 18:02:38

标签: php simplexml

我在类中有以下代码:

$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

问题是“echo $ tmp [0]”打印更新的文本,而$ this-> Xml-> asXml()仍然包含旧节点值。搜索这个网站我发现这是更新整个XML树的正确方法,但这仍然无效。 有什么想法吗?

由于

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分:1)

找不到比这更好的方法:

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

答案 2 :(得分:0)

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