我在类中有以下代码:
$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树的正确方法,但这仍然无效。 有什么想法吗?
由于
答案 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);