php - 使用 PHP 更新 XML 节点

标签 php xml simplexml

我有一个 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";
?>

我想更新节点值,但上面的代码似乎不正确。谁能帮我改一下??

更新: 我的问题有点类似于这个 Updating a XML file using PHP但在这里,我正在从外部文件加载 XML,而且我正在更新一个元素,而不是一个属性。这就是我的困惑所在。

最佳答案

您没有访问正确的节点。在您的示例中,$xml持有根节点 <info/> .这里有一个很好的提示:始终在其根节点之后命名保存 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');

关于php - 使用 PHP 更新 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748014/

相关文章:

php - 文件上传 : Size validator or setMaxFileSize()

javascript - 处理动态输入组

javascript - jQuery 为图像标签创建了不正确的元素

java - JAXB 编码/解码具有 List 变量成员的类对象

php - Xpath 查询包含

php - 通过 XPath 提取 HTML 字段

php - 使用 php 将数据更新/附加到 xml 文件

php - 如何从自动完成中获取单击的输入单选值以将表单发送到 php 文件

php - 重新加载表格而不刷新php中的整个页面

c# - 无效操作异常 : The type of the argument object 'Scratch' is not primitive