DomNode->append_child
Adds a new child at the end of the children
&reftitle.description;
DOMNode
DOMNodeappend_child
DOMNodenewnode
This functions appends a child to an existing list of children or creates
a new list of children.
&reftitle.parameters;
newnode
The node being appended. It can be created with e.g.
,
etc. or
simply by using any other node.
You can not append a DOMAttribute using this
method. Use
instead.
&reftitle.returnvalues;
Returns the appended node on success&return.falseforfailure;.
&reftitle.changelog;
&Version;
&Description;
4.3.0
You are not allowed anymore to insert a node from another document.
4.3.0
Prior to PHP 4.3.0, the new child is duplicated before being
appended.
Therefore the new child is a completely new copy which can be
modified without changing the node which was passed to this function.
If the node passed has children itself, they will be duplicated as
well, which makes it quite easy to duplicate large parts of an XML
document. The return value is the appended child. If you plan to do
further modifications on the appended child you must use the returned
node.
4.3.0 and 4.3.1
The new child newnode is first unlinked from
its existing context, if it's already a child of DomNode. Therefore
the newnode is moved and not copies anymore.
This is the behaviour according to the W3C specifications. If you
need the old behaviour, use before appending.
4.3.2
The new child newnode is first unlinked from
its existing context, if it's already in the tree. Same rules apply.
&reftitle.examples;
The following example adds a new element node to a fresh document and sets
the attribute align to left.
Adding a child
create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>
]]>
The above example could also be written as the following:
Adding a child
create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?>
]]>
A more complex example is the one below. It first searches for a certain
element, duplicates it including its children and adds it as a sibling.
Finally a new attribute is added to one of the children of the new sibling
and the whole document is dumped.
Adding a child
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");
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
?>
]]>
The above example could also be done with
instead of
.
Migrating to PHP 5
You should use .
&reftitle.seealso;