2010-06-28 102 views
4

我有一个XML文件与一些CDATA节点。我想改变CDATA节点内的文本(保持为CDATA节点)。所以,我想我首先需要读取CDATA节点,然后将其写回。但是,我不确定如何在PHP中执行此操作。我能够创建一个新的CDATA节点,但我如何编辑一个CDATA节点?有没有直接的方法来做到这一点?PHP XML编辑CDATA节点

谢谢。

+0

您使用的(即你是如何操纵XML文件)库是什么? – Artefacto 2010-06-28 19:40:22

+0

PHP/XML - DOMDocument/SimpleXML – Blueboye 2010-06-28 19:42:03

+0

在simplexml中存在这个问题,请看这个错误报告:http://bugs.php.net/bug.php?id=42421 – jordanstephens 2010-06-28 19:42:55

回答

1

我修好了我自己:

$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); 
    } 
}