Подтвердить что ты не робот

Обновление 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 из внешнего файла, а также обновляю элемент, а не атрибут. То, где моя путаница лежит.

4b9b3361

Ответ 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.