2010-06-28 142 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); 
    } 
}