Home >Backend Development >PHP Tutorial >修改xml文件值的问题
我想改变question为22222的值,这个值是在前台传入的,不过我不知道应该如何传,应该如何操作了?最好是用DOMDocument类来操作
<?xml version="1.0" encoding="utf-8"?><parent> <title>3</title> <author>admin</author> <contentall> <subject> <question>111111</question> <option> <oid>A</oid> <content>11</content> </option> <option> <oid>B</oid> <content>22</content> </option> <option> <oid>C</oid> <content>33</content> </option> <option> <oid>D</oid> <content>44</content> </option> </subject> <subject> <question>22222</question> <option> <oid>A</oid> <content>22</content> </option> <option> <oid>B</oid> <content>11</content> </option> <option> <oid>C</oid> <content>44</content> </option> <option> <oid>D</oid> <content>33</content> </option> </subject> <subject> <question>33333</question> <option> <oid>A</oid> <content>444</content> </option> <option> <oid>B</oid> <content>222</content> </option> <option> <oid>C</oid> <content>333</content> </option> <option> <oid>D</oid> <content>2111</content> </option> </subject> </contentall></parent>
你想怎么改?
$fn = '你的xml文件名';$tag = 'question'; //待修改的节点名$val = '22222'; //待修改的节点值,和 $tag 一起用于定位$replace = 'xxx'; //修改后的值$xml = simplexml_load_file($fn);$p = $xml->xpath("//{$tag}[.='$val']");$p[0][0] = $replace;$xml->asXML($fn); //写回去
PHP code?12345678$fn = '你的xml文件名';$tag = 'question'; //待修改的节点名$val = '22222'; //待修改的节点值,和 $tag 一起用于定位$replace = 'xxx'; //修改后的值$xml = simplexml_load_file($fn);$p = $xml->xpath("//{$tag}[.=……
$p[0][0]是什么意思啊?
xpath 返回的是所有符合条件节点数组(是一个二维的对象数组)
$p [0][0] 表示第一个匹配到的节点
$p[0] [0] 表示节点中的第一个元素
xpath 返回的是所有符合条件节点数组(是一个二维的对象数组)
$p[0][0] 表示第一个匹配到的节点
$p[0][0] 表示节点中的第一个元素
那按照你这样说的话不就是匹配了question为111111,不是question为222222吧
$xml->xpath("//{$tag}[.='$val']");
实际执行的是
$xml->xpath("//question[.='22222']");
所以对于你的数据,只会匹配到