Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP XML编辑CDATA节点_Php_Xml_Cdata - Fatal编程技术网

PHP XML编辑CDATA节点

PHP XML编辑CDATA节点,php,xml,cdata,Php,Xml,Cdata,我有一个包含一些CDATA节点的XML文件。我想更改CDATA节点内的文本(将其保留为CDATA节点)。因此,我想我首先需要读取CDATA节点,然后将其写回。但是,我不知道如何在PHP中做到这一点。我可以创建一个新的CDATA节点,但如何编辑CDATA节点?有没有直接的方法 谢谢。我不精通PHP(有很多Java DOM经验),但我认为您需要用新的CDATA文本节点替换文本节点。看 及 我自己修复了它: $nodes = $xml->getElementsByTagName('tagnam

我有一个包含一些CDATA节点的XML文件。我想更改CDATA节点内的文本(将其保留为CDATA节点)。因此,我想我首先需要读取CDATA节点,然后将其写回。但是,我不知道如何在PHP中做到这一点。我可以创建一个新的CDATA节点,但如何编辑CDATA节点?有没有直接的方法

谢谢。

我不精通PHP(有很多Java DOM经验),但我认为您需要用新的CDATA文本节点替换文本节点。看

我自己修复了它:

$nodes = $xml->getElementsByTagName('tagname');

$oldTitleNode = null; 
$newTitleNode = null;

//Iterate for each <title> tag 
foreach ($nodes as $node) {     
   if ($node->parentNode->getAttribute('name')== $tag_name_value){

       $oldTitleNode = $node;

      //Create new CDATA Node
      $newTitleNode=$node->parentNode->appendChild($xml->createElement('tagname'));
      $cdata=$xml->createCDATASection($update_title);
      $newTitleNode->appendChild($cdata);

      //Replace the Existing CDATA Node
     $node->parentNode->replaceChild($newTitleNode, $oldTitleNode);
   } 
}
$nodes=$xml->getElementsByTagName('tagname');
$oldtilenode=null;
$newTitleNode=null;
//迭代每个标记
foreach($node作为$node){
if($node->parentNode->getAttribute('name')==$tag\u name\u值){
$oldtilenode=$node;
//创建新的CDATA节点
$newTitleNode=$node->parentNode->appendChild($xml->createElement('tagname');
$cdata=$xml->CreateCataSection($update\u title);
$newTitleNode->appendChild($cdata);
//替换现有的CDATA节点
$node->parentNode->replaceChild($newTitleNode,$oldTitleNode);
} 
}

您使用的是什么库(即您如何操作XML文件)?PHP/XML-DOMDocument/simplexml simplexml中存在此问题,请查看此错误报告:是的。SimpleXML可能不是处理XML的正确方法,但我认为DOMDocument应该足够好,可以完成我正在尝试的工作。我就是找不到正确的方法。