我有一個XML文件與一些CDATA節點。我想改變CDATA節點內的文本(保持爲CDATA節點)。所以,我想我首先需要讀取CDATA節點,然後將其寫回。但是,我不確定如何在PHP中執行此操作。我能夠創建一個新的CDATA節點,但我如何編輯一個CDATA節點?有沒有直接的方法來做到這一點?PHP XML編輯CDATA節點
謝謝。
我有一個XML文件與一些CDATA節點。我想改變CDATA節點內的文本(保持爲CDATA節點)。所以,我想我首先需要讀取CDATA節點,然後將其寫回。但是,我不確定如何在PHP中執行此操作。我能夠創建一個新的CDATA節點,但我如何編輯一個CDATA節點?有沒有直接的方法來做到這一點?PHP XML編輯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);
}
}
我不熟悉PHP(大量的Java DOM體驗),但我認爲你需要用新的CDATA文本節點替換文本節點。見
http://www.php.net/manual/en/domdocument.createcdatasection.php
和
您使用的(即你是如何操縱XML文件)庫是什麼? – Artefacto 2010-06-28 19:40:22
PHP/XML - DOMDocument/SimpleXML – Blueboye 2010-06-28 19:42:03
在simplexml中存在這個問題,請看這個錯誤報告:http://bugs.php.net/bug.php?id=42421 – jordanstephens 2010-06-28 19:42:55