2010-08-01 4 views
2

Je le code suivant dans une classe:Mise à jour d'une valeur de nœud avec simpleXML de PHP et XPath ne fonctionne pas

$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 

le problème est « echo $ tmp [0] » imprime le texte mis à jour en $ this-> Xml-> asXml() contient toujours l'ancienne valeur de noeud. En cherchant sur ce site, j'ai trouvé que c'était la bonne façon de mettre à jour tout l'arbre XML, mais cela ne fonctionne toujours pas. Une idée?

Merci

Répondre

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

pourquoi cela devrait-il fonctionner? – Mokuchan

1

Pas trouvé de mieux que celui-ci:

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

docs de PHP sont dans le besoin d'un exemple de cette ... la réponse semble être:

$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 

Semble que vous devez vous référer au premier enfant du nœud, qui serait le texte (je suppose que c'est ce qui se passe de toute façon) .

Notez les secondes crochets $tmp[0][0].

+0

Génial, ça marche! – Thasmo