PHP XML-узел редактирования CDATA - PullRequest
4 голосов
/ 28 июня 2010

У меня есть XML-файл с некоторыми узлами CDATA. Я хочу изменить текст внутри узла CDATA (сохраняя его как узел CDATA). Итак, я думаю, мне сначала нужно прочитать узел CDATA, а затем записать его обратно. Но я не уверен, как это сделать в PHP. Мне удалось создать новый узел CDATA, но как я могу отредактировать узел CDATA? Есть ли прямой способ сделать это?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

Я не разбираюсь в PHP (большой опыт работы с Java DOM), но я думаю, что вам нужно заменить текстовый узел новым текстовым узлом CDATA.См.

http://www.php.net/manual/en/domdocument.createcdatasection.php

и

http://www.php.net/manual/en/domnode.replacechild.php

1 голос
/ 29 июня 2010

Я исправил это самостоятельно:

$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);
   } 
}
...