我有XML文件,如:
<?xml version="1.0" encoding="UTF-8"?>
<INFO version="2.0">
<Ad id="602867">
<Wrapper>
<AdSystem><![CDATA[Acudeo Compatibl]]e</AdSystem>
<INFOTagURI>
<![CDATA[url]]>
</INFOTagURI>
<Impression><![CDATA[old_url]]></Impression>
</Wrapper>
</Ad>
</INFO>
我想将old_url
CDATA值更改为new_url
我尝试了这样的代码:
$domDocument = new \DOMDocument('1.0', 'UTF-8');
$domDocument->loadXML($xml);
$impressionNode = $domDocument->getElementsByTagName("Wrapper")->item(0)->getElementsByTagName('Impression')->item(0);
$parentNode = $impressionNode->parentNode;
$oldNode = $impressionNode;
$newNode = $parentNode->appendChild($domDocument->createElement('Impression'));
$cdata = $domDocument->createCDATASection('new_url');
$newNode->appendChild($cdata);
$parentNode->removeChild($oldNode);
$parentNode->appendChild($newNode);
echo $domDocument->saveXML();
它仍然返回old_url
但调试此逻辑我可以看到$parentNode
值更改为new_url
,所以看起来需要一些逻辑来更新父级的父级,所以根元素??
仅供参考:此外,我尝试使用replaceChild
。
请帮我解决这个问题,谢谢!