PHP替换XML文件中的CData

时间:2018-01-22 22:38:55

标签: php xml domdocument

我有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

请帮我解决这个问题,谢谢!

0 个答案:

没有答案