我有一个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,同时还要更新元素而不是属性。那就是我的困惑所在。
您没有访问正确的节点。在您的示例中,$xml保留根节点<info/>。这里有个很好的提示: 始终在XML文档的根节点之后命名用于保存XML文档的变量 ,这样可以避免这种混淆。
$xml
<info/>
另外,正如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');