【问题标题】:Updating a node value with PHP's simpleXML and xpath not working使用 PHP 的 simpleXML 和 xpath 更新节点值不起作用
【发布时间】:2010-08-01 18:02:38
【问题描述】:

我在一个类中有以下代码:

$tmp= $this->Xml->xpath("/page/text[@id='$this->Id']");
$tmp[0]= $this->Text;
echo $tmp[0];
echo $this->Xml->asXml();
$this->Xml->asXML($this->FileName); //save XML

问题是 "echo $tmp[0]" 打印更新的文本,而 $this->Xml->asXml() 仍然包含旧的节点值。在这个网站上搜索我发现这是更新整个 XML 树的正确方法,但这仍然不起作用。 有什么想法吗?

谢谢

【问题讨论】:

    标签: php simplexml


    【解决方案1】:

    PHP 的文档急需一个这样的例子……答案似乎是:

    $tmp = $this->Xml->xpath("/page/text[@id='$this->Id']");
    $tmp[0][0] = $this->Text;
    echo $tmp[0][0];
    echo $this->Xml->asXml();
    $this->Xml->asXML($this->FileName); //save XML
    

    似乎您需要参考节点的第一个孩子,这将是文本(我假设这是正在发生的事情)。

    注意第二个括号$tmp[0][0]

    【讨论】:

      【解决方案2】:

      没有找到比这个更好的方法:

      $dom=dom_import_simplexml($xml_element); // $xml_element - in your case is $tmp[0]
      $dom->nodeValue = "new value"; 
      

      【讨论】:

        【解决方案3】:
        list( , $node) = each($tmp);
        $node->asXML($this->FileName);
        

        【讨论】:

          猜你喜欢
          • 2012-11-30
          • 1970-01-01
          • 2019-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-13
          • 1970-01-01
          • 2011-01-27
          相关资源
          最近更新 更多