DOMDocument::importNode

(PHP 5, PHP 7, PHP 8)

DOMDocument::importNode Импортировать узел в текущий документ

Описание

public DOMDocument::importNode(DOMNode $node, bool $deep = false): DOMNode|false

Эта функция возвращает копию импортируемого узла и связывает её с текущим документом.

Список параметров

node

Узел для импорта.

deep

Если установлено значение true, этот метод будет рекурсивно импортировать поддерево узла node.

Замечание:

Чтобы скопировались атрибуты узла, deep должен быть установлен в true.

Возвращаемые значения

Скопированный узел или false, если он не может быть скопирован.

Ошибки

Если узел не может быть импортирован, будет выброшено исключение DOMException.

Примеры

Пример #1 Пример использования DOMDocument::importNode()

Копирование узлов между документами.

<?php

$orgdoc
= new DOMDocument;
$orgdoc->loadXML("<root><element><child>text in child</child></element></root>");

// Узел, который будет импортирован в новый документ
$node = $orgdoc->getElementsByTagName("element")->item(0);


// Создание нового документа
$newdoc = new DOMDocument;
$newdoc->formatOutput = true;

// Добавление разметки
$newdoc->loadXML("<root><someelement>text in some element</someelement></root>");

echo
"Новый документ перед добавлением в него узлов:\n";
echo
$newdoc->saveXML();

// Импорт узла и всех его потомков в документ
$node = $newdoc->importNode($node, true);
// И затем добавление его в корневой узел
$newdoc->documentElement->appendChild($node);

echo
"\nНовый документ после добавления в него узлов:\n";
echo
$newdoc->saveXML();
?>

Результат выполнения приведённого примера:

Новый документ перед добавлением в него узлов:
<?xml version="1.0"?>
<root>
  <someelement>text in some element</someelement>
</root>

Новый документ после добавления в него узлов:
<?xml version="1.0"?>
<root>
  <someelement>text in some element</someelement>
  <element>
    <child>text in child</child>
  </element>
</root>