Обновление значения узла с PHP simpleXML и xpath не работает

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

$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, но это все еще не работает. Есть идеи?

Спасибо


person Mokuchan    schedule 01.08.2010    source источник


Ответы (2)


Документы 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].

person Cory Mawhorter    schedule 02.08.2011

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

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