Учебник PHP



DomNode->append_child

(unknown)

DomNode->append_child - добавляет нового потомка/child в конец списка потомков.

Описание

object DomNode->append_child (object newnode)

Эта функция присоединяет потомка к списку потомков или создаёт новый список. Потомок может  быть создан, например, функцией DomDocument_create_element(), DomDocument_create_text() etc. или просто путём использования другого узла.

Перед присоединением потомок сначала дублируется. Следовательно, новый потомок является совершенно новой копией, которая может изменяться без влияния на узел, который был передан этой функции. Если передаваемый узел сам имеет потомков, они также продублируются, что позволяет довольно легко дублировать большие части xml-документа.
return-значение это присоединённый потомок. Если вы планируете в дальнейшем модифицировать присоединённый потомок, вы обязаны использовать возвращаемый узел.

В следующем примере узел нового элемента добавляется в документ, и  атрибут "align" получает значение "left".
Пример 1. Добавление потомка
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>

Этот пример можно также записать так:

Пример 2. Добавление потомка
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?>

Далее идёт более сложный пример. Сначала ищется определённый элемент, затем он вместе с потомками дублируется и прибавляется как родственник/sibling. Наконец, новый атрибут добавляется к одному из потомков нового родственника и весь документ дампируется.

Пример 3. Добавление потомка
<?php
include("example.inc");
if(!$dom = domxml_open_mem($xmlstr)) {
echo "Error while parsing the document\n";
exit;
}
$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];
$parent = $element->parent_node();
$newnode = $parent->append_child($element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");
echo "<PRE>";
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
echo "</PRE>";
?>

Этот пример может быть сделан также с помощью DomNode_insert_before() вместо DomNode_append_child().

См. также DomNode_insert_before().

Назад Оглавление Вперёд
DomElement->tagname Вверх DomNode->append_sibling