Обновление значения узла с помощью PHP simpleXML и xpath не работает - PullRequest
2 голосов
/ 01 августа 2010

У меня есть следующий код внутри класса:

$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 ]

12 голосов
/ 02 августа 2011

Документы 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 голос
/ 21 июля 2011

Не найден лучший способ, чем этот:

$dom=dom_import_simplexml($xml_element); // $xml_element - in your case is $tmp[0]
$dom->nodeValue = "new value"; 
0 голосов
/ 01 августа 2010
list( , $node) = each($tmp);
$node->asXML($this->FileName);
...