Обновление узла XML с помощью 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> 

Я пытаюсь обновить узел 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"; ?> 

Я хочу обновить значения узлов, но приведенный выше код кажется неправильным. Может ли кто-нибудь помочь мне исправить это?

UPDATE: Мой вопрос несколько похож на это Обновление XML-файла с использованием PHP, но здесь я загружаю XML из внешнего файла, а также обновляю элемент, а не атрибут. Вот где моя смута.

Вы не получаете доступ к правильному узлу. В вашем примере $xml содержит корневой узел <info/> . Вот отличный совет: всегда называйте переменную, которая хранит ваш XML-документ после его корневого узла , это предотвратит такую ​​путаницу.

Кроме того, как указал Уорд Муйлаерт, вам нужно сохранить файл.

Вот исправленный пример:

 // 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'); 

Вы должны записать изменения в файл, используйте метод asXML для SimpleXMLElement.