What's not mentioned here is that DOMNode::appendChild() can also be used to move an existing node to another part of the DOMDocument, e.g.
<?php
$doc = new DOMDocument();
$doc->loadXML("<foobar><bar/><foo/></foobar>");
$bar = $doc->documentElement->firstChild;
$foo = $doc->documentElement->lastChild;
$foo->appendChild($bar);
print $doc->saveXML();
?>
This produces:
<?xml version="1.0"?>
<foobar><foo><bar/></foo></foobar>
Note that the nodes "<foo/>" and "<bar/>" were siblings, i.e. the first and last child of "<foobar>" but using appendChild() we were able to move "<bar/>" so that it is a child of "<foo/>".
This saves you the trouble of doing a DOMNode::removeChild($bar) to remove "<bar/>" before appending it as a child of "<foo/>".
Kris Dover
DOMNode::appendChild
(PHP 5)
DOMNode::appendChild — Ajoute un nouveau fils à la fin des fils
Description
Cette fonction ajoute un fils à une liste de fils existante ou crée une nouvelle liste de fils. Le fils peut être créé avec, e.g. DOMDocument::createElement, DOMDocument::createTextNode, etc. ou simplement en utilisant tout autre noeud.
Liste de paramètres
- newnode
-
Le fils à ajouter.
Valeurs de retour
Le noeud ajouté.
Erreurs / Exceptions
- DOM_NO_MODIFICATION_ALLOWED_ERR
-
Lancé si le noeud est en lecture seule ou si le parent précédent le noeud à insérer est en lecture seule.
- DOM_HIERARCHY_REQUEST_ERR
-
Lancé si le noeud est d'un type qui n'autorise pas d'enfant du type du noeud newnode , ou si le noeud à ajouter est un des noeuds ancêtres ou ce noeud lui-même.
- DOM_WRONG_DOCUMENT_ERR
-
Lancé si newnode a été créé depuis un document différent que celui qui a créé ce noeud.
Exemples
L'exemple suivant ajoutera un nouveau noeud à un document nouveau.
Exemple #1 Ajout d'un fils
<?php
$doc = new DOMDocument;
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);
echo $doc->saveXML();
?>
Voir aussi
- DOMNode::removeChild - Supprime un fils de la liste des enfants
- DOMNode::replaceChild - Remplace un fils
DOMNode::appendChild
01-Jun-2008 03:49
30-Mar-2008 12:56
If you want to create nested DOM elements:
<?php
$doc = new DOMDocument();
$foo = $doc->createElement("foo");
$doc->appendChild($foo);
$bar = $doc->createElement("bar");
$foo->appendChild($bar);
$bazz = $doc->createElement("bazz");
$foo->appendChild($bazz);
echo $doc->saveXML();
?>
Is equivalent to:
<foo>
<bar></bar>
<bazz></bazz>
</foo>
