Updating a node value with PHP's simpleXML and

2019-01-15 20:41发布

问题:

I have the following code inside a class:

$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

the problem is "echo $tmp[0]" prints the updated text while $this->Xml->asXml() still contains the old node value. Searching around this website I found this to be the correct way to update the whole XML tree, yet this is still not working. Any idea?

Thanks

回答1:

PHP's docs are in dire need of an example of this... the answer seems to be:

$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

Seems you need to refer to the node's first child, which would be the text (I'm assuming this is what's going on anyway).

Note the second brackets $tmp[0][0].



回答2:

Not found better way than this one:

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


回答3:

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


标签: php simplexml