Подскажите как скопировать часть XML-дерева?

  • Автор темы Автор темы Milagro
  • Дата начала Дата начала

Milagro

Новичок
Подскажите как скопировать часть XML-дерева?

Как по простому скопировать часть XML-дерева со всеми его дочерними узлами?

Например из

<book>
<chapter>
<para/>
<chapter>
</book>

получить

<book>
<chapter>
<para/>
<chapter>
<chapter>
<para/>
<chapter>
</book>

Пробовал эксперименты с DomNode->insert_before, результат никакой.
 
делай DOMNode->cloneNode(true)
а потом уже appendChild к нужной ноде получившегося фрагмента
 
Не понял.

Давай так:
$dom - это весь документ
$node - это фрагмент (поддерево) <chapter>

Что клонировать и куда потом аппендить?
 
$newNode = $node->cloneNode(true); //true - это deep, т.е. со всеми вложенными нодами

$dom->.... тут нода к КОТОРОЙ надо скопировать->appendChild($newNode);
 
а вот если усложнить задачу
и необходимо скопировать в другой Дом объект?
 
2Alexande
у склонированной ноды сначала надо ownerDocument поменять
а потом сделать appendChild к ноде другого документа

bgm
автор топика хочет скопировать часть дерева
в другое место, а александр в другой документ
и там и там сначала делается cloneNode(true) и потом уже манипуляции с документом
 
Автор оригинала: slach
автор топика хочет скопировать часть дерева
в другое место, а александр в другой документ
и там и там сначала делается cloneNode(true) и потом уже манипуляции с документом
Собственно ведь надо понять - что и куда копируется, представить себе последовательность действий (в голове или на бумаге), а все необходимые инструменты есть. Но вот сначала думать и только потом делать - это не модно.
 
Сверху