SimpleXML и CDATA

Werewolf

Новичок
SimpleXML и CDATA

Каким способом можно записать через simplexml в дерево xml CDATA ?

PHP:
$parser->part[$part]->subparts->subpart[$ subpart]->text = "<![CDATA[\ntext\n]]>";
Такое не катит, он ескейпит < и >.

Я знаю, что это сделать можно через DOM. Но не знаю как в DOM удалить из элемента существующую CDATA, appendChild добавляет еще одну сверху и их получается две.
 

slach

Новичок
смотри сюда
http://docs.php.net/manual/ru/book.dom.php

DOMDocument->createCDATASection()
DOMNode->replaceChild()

ну и коментарии к мануалу читай

вообще SimpleXML слабо предназначен для того, чтобы активно ИЗМЕНЯТЬ дерево
обычно его используют для того чтобы был более простой способ ЧТЕНИЯ узлов дерева

-~{}~ 09.08.09 10:33:

кроме того посмотри комменты

http://docs.php.net/manual/ru/function.simplexml-element-addChild.php

PHP:
<?php
class SimpleXMLExtend extends SimpleXMLElement
{
  public function addCData($nodename,$cdata_text)
  {
    $node = $this->addChild($nodename); //Added a nodename to create inside the function
    $node = dom_import_simplexml($node);
    $no = $node->ownerDocument;
    $node->appendChild($no->createCDATASection($cdata_text));
  }
} 
?>
вместо appendChild можно сделать replaceChild и соответсвенно переименовать в replaceCdata ф-цию[
 

Werewolf

Новичок
Спасибо конечно, но сам уже разобрался. Как раз подобным образом, через дом.
 
Сверху