我想改变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>
xml修改值

解决方案 »

  1.   

    $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); //写回去
      

  2.   

    xpath 返回的是所有符合条件节点数组(是一个二维的对象数组)$p[0][0] 表示第一个匹配到的节点
    $p[0][0] 表示节点中的第一个元素
      

  3.   

    那按照你这样说的话不就是匹配了question为111111,不是question为222222吧
      

  4.   

    $xml->xpath("//{$tag}[.='$val']");
    实际执行的是
    $xml->xpath("//question[.='22222']");所以对于你的数据,只会匹配到 <question>22222</question>