Manuel PHP
Précédent |  | Suivant

# DomNode->append_child

(no version information, might be only in CVS)

DomNode->append_child -- Ajoute un nouveau fils à la fin des enfants

## Description

class DOMNode {
DOMNode append_child ( DOMNode newnode )
}

Cette fonction ajoute un fils à une liste existante de fils ou crée une nouvelle liste de fils.

## Liste de paramètres

newnode

  Le noeud qui sera ajouté. Il peut être créé avec DomDocument->create_element, DomDocument->create_text_node etc. ou simplement en utilisant un autre noeud.

  > Note : Vous ne pouvez pas ajouter un DOMAttribute en utilisant cette méthode. Utilisez DomElement->set_attribute() à la place.

## Valeurs de retour

Retourne le noeud ajouté en cas de succès ou `FALSE` en cas d'échec.

## Historique

Version | Description
--- | ---
4.3.0 | Vous n'êtes plus autorisé d'insérer un noeud à partir d'un autre document.

4.3.0

Avant PHP 4.3.0, le nouveau fils est dupliqué avant d'être ajouté. 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é.

4.3.0 et 4.3.1 | Le nouveau fils newnode est d'abord déconnecté de son contexte, s'il est déjà fils d'un DomNode. Le noeud est donc déplacé et n'est plus copié. Ceci est le comportement qui correspond aux spécifications W3C. Si vous avez besoin de l'ancien comportement, utilisez DomNode->clone_node avant d'ajouter.
4.3.2 | Le nouveau fils newnode est d'abord déconnecté de son contexte, s'il est déjà dans l'arbre. Les mêmes règles s'appliquent.

## Exemples

L'exemple suivant ajoute un nouveau noeud dans un document, et modifie son attribut align à left.

Exemple 1. 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 être aussi écrit comme ceci :

Exemple 2. 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é.

Exemple 3. 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");
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
?>`

L'exemple ci-dessus peut aussi être réalisé avec la fonction DomNode->insert_before au lieu de DomNode->append_child.

## Migration vers PHP 5

Vous devriez utiliser DOMNode->appendChild().

## Voir aussi

DomNode->insert_before
DomNode->clone_node

Précédent | Sommaire | Suivant
DomNode->add_namespace | Niveau supérieur | DomNode->append_sibling