7.24.42 domnode->append_child()
Ajoute un nouveau fils new child at the end of the children
[ Exemples avec DomNode_append_child ] CVS uniquement
object
domnode->append_child (
object
newnode
)
domnode->append_child
ajoute le noeud
newnode
à une liste
de fils existante, ou bien crée une nouvelle liste de fils. Un noeud
fils peut être créé avec les fonctions
domdocument_create_element
,
domdocument_create_text
, etc... ou bien en
utilisant simplement un autre noeud.
Avant d'être ajouté, un noeud est d'abord dupliqué. Par conséquent,
le nouveau fils est une copie qui peut être modifiée sans altérer le
noeud utilisé dans cette fonction. Si le noeud passé a des
fils, ils seront aussi dupliqués, ce qui rend cette fonction
pratique pour copier des documents XML complexes. La valeur retournée
est le noeud fils ajouté. Si vous voulez apporter des modifications
au noeud fils, vous devez utiliser le noeud retourné.
(PHP >= 4.3) Le nouveau fils
newnode
est d'abord
déconnecté de son contexte, si il existait dans le document. Par conséquent,
le noeud est déplacé et ce n'est plus une copie. C'est le comportement
compatible avec les spécifications du consortium W3C. SI vous voulez dupliquer
de grandes parties d'un document XML, utiliser la fonction
domnode->clone_node
avant de l'ajouter.
l'exemple suivant ajoute un nouveau noeud dans un document, et modifie son
attribut "align" à "left".
ajouter un noeud fils avec dom xml |
<?php $doc = domxml_new_doc("1.0"); $node = $doc->create_element("para"); $newnode = $doc->append_child($node); $newnode->set_attribute("align", "left"); ?>
|
l'exemple ci-dessus peut etre aussi écrit comme ceci :
ajouter un noeud fils avec dom xml (méthode 2) |
<?php $doc = domxml_new_doc("1.0"); $node = $doc->create_element("para"); $node->set_attribute("align", "left"); $newnode = $doc->append_child($node); ?>
|
un exemple plus complexe est celui ci-dessous. il commence par rechercher
un élément, le duplique avec ses fils, et l'ajoute comme frère. finalement,
un nouvel attribut est ajouté, et le document complet est publié.
Ajouter un noeud fils avec DOM XML (exemple 3) |
<?php include("exemple.inc");
if(!$dom = domxml_open_mem($xmlstr)) { echo "erreur lors de l'analyse du 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>"; ?>
|
l'exemple ci-dessus peut aussi être réalisé avec la fonction
domnode_insert_before
au lieu de
domnode_append_child
.
Voir aussi
domnode_insert_before
et
domnode_clone_node
.
|