Как клонировать узел и использовать его как documentElement для нового DOMDocument? - PullRequest
1 голос

В PHP5 у меня есть DOMDocument ($xmlDoc1). Допустим, его documentElement: <root id="1" type=""/>. Я создаю новый DOMDocument $xmlDoc2.

Что мне нужно сделать, так это клон $xmlDoc1 documentElement (с его атрибутами, но не его потомками), и использовать его в качестве documentElement для $xmlDoc2.

В ASP вы могли бы написать:

XMLDoc2.DocumentElement = XMLDoc1.DocumentElement.CloneNode(False)

PHP DOM имеет метод cloneNode(), но не позволяет добавлять клонированный узел в другой документ.

Как я мог это сделать?

1 Ответ

2 голосов
/ 05 мая 2011

Посмотрите на:

http://php.net/manual/en/domdocument.importnode.php

Пример:

<?php
$dom = new DomDocument();
$dom->loadXml('<root attr1="a" attr2="b"><foo></foo></root>');

$dom2 = new DomDocument();
$dom2->appendChild(
    $dom2->importNode($dom->documentElement->cloneNode(false), true) 
);

header('Content-Type: text/xml; charset="UTF-8"');
echo $dom2->saveXml();

Выполненная:

http://codepad.org/yCFegZbp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...