Задать вопрос

Приведите простейший пример для этой рекомендации с официального сайта php.net?

Приведите, пожалуйста, простейший пример вот этой фразе-описанию с официального сайта:
...вам нужно создать временный DOMDocument с фиктивным корнем, а затем пройти по всем узлам потомкам корневого узла XML-документа, чтобы добавить их.
  • Вопрос задан
  • 739 просмотров
Подписаться 5 Простой Комментировать
Решения вопроса 1
@deadem
Как я понял, автор хочет узнать, как сделать по стандарту, не используя хак с DocumentFragment::appendXML.

Например, так:
$targetDoc = new DOMDocument();
$targetDoc->loadXML("<root/>");
$fragment = $targetDoc->childNodes[0]; // нода, в которую нужно загрузить XML

$doc = new DOMDocument(); // фиктивный документ, в который загружаем данные
$doc->loadXML("<root><foo>text</foo><bar>text2</bar></root>"); // оборачиваем их в фиктивного рута

// переносим
foreach ($doc->childNodes[0]->childNodes as $node) {
  $clone = $targetDoc->importNode($node, true);
  $fragment->appendChild($clone);
}

var_dump($doc->saveXML() == $targetDoc->saveXML());
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@fix0_o
По мойму это для манипуляций с XML структурами
создаем временный DOMDocument?
$doc = new DOMDocument(); // инициализация
$doc->formatOutput = true; // мы хотим красивый вывод
$doc->loadXML("<root/>"); // наш XML обьект
$f = $doc->createDocumentFragment(); // создаем временный DOMDocument
$f->appendXML("<foo>text</foo><bar>text2</bar>"); // объявляем новый элемент $f
$doc->documentElement->appendChild($f);  // добавляем элемент $f
echo $doc->saveXML(); // выводим на экран
echo $doc->saveXML() . "\n"; // Сохранение всего документа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы