Обновление XML node с помощью PHP
У меня есть XML файл test.xml
<?xml version="1.0"?>
<info>
<user>
<name>
<firstname>FirstName</firstname>
<lastname>Last Name</lastname>
<nameCoordinate>
<xName>125</xName>
<yName>20</yName>
</nameCoordinate>
</name>
</user>
</info>
Я пытаюсь обновить node xName и yName с помощью PHP при отправке формы. Итак, я загрузил файл с помощью simplexml_load_file(). Код действия формы PHP ниже
<?php
$xPostName = $_POST['xName'];
$yPostName = $_POST['yName'];
//load xml file to edit
$xml = simplexml_load_file('test.xml');
$xml->info->user->name->nameCoordinate->xName = $xPostName;
$xml->info->user->name->nameCoordinate->yName = $yPostName;
echo "done";
?>
Я хочу обновить значения node, но приведенный выше код кажется неправильным. Может ли кто-нибудь помочь мне исправить это?
UPDATE:
Мой вопрос несколько похож на этот Обновление XML файла с использованием PHP, но здесь я загружаю XML из внешнего файла, а также обновляю элемент, а не атрибут. То, где моя путаница лежит.
Ответы
Ответ 1
Вы не получаете доступ к node. В вашем примере $xml
содержит корень node <info/>
. Вот отличный совет: всегда называйте переменную, которая хранит ваш XML-документ после его корня node, это предотвратит такое замешательство.
Кроме того, как указал Уорд Муйлаерт, вам нужно сохранить файл.
Здесь скорректированный пример:
// load the document
// the root node is <info/> so we load it into $info
$info = simplexml_load_file('test.xml');
// update
$info->user->name->nameCoordinate->xName = $xPostName;
$info->user->name->nameCoordinate->yName = $yPostName;
// save the updated document
$info->asXML('test.xml');
Ответ 2
Вы должны записать изменения в файл, используйте asXML метод элемента SimpleXMLElement.