一尘不染

使用PHP更新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>

我正在尝试在表单提交中使用PHP更新节点xName和yName。因此,我已经使用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";
?>

我想更新节点值,但是上面的代码似乎不正确。谁能帮助我纠正它?

更新:我的问题有点类似于使用PHP更新XML文件,但是在这里,我要从外部文件加载XML,同时还要更新元素而不是属性。那就是我的困惑所在。


阅读 393

收藏
2020-05-29

共1个答案

一尘不染

您没有访问正确的节点。在您的示例中,$xml保留根节点<info/>。这里有个很好的提示:
始终在XML文档的根节点之后命名用于保存XML文档的变量 ,这样可以避免这种混淆。

另外,正如Ward Muylaert指出的那样,您需要保存文件。

这是更正的示例:

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