Home >Backend Development >PHP Tutorial >修改xml文件值的问题

修改xml文件值的问题

WBOY
WBOYOriginal
2016-06-23 14:03:03921browse

我想改变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']");

所以对于你的数据,只会匹配到 22222

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn