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