DomNode->append_child

(No version information available, might be only in CVS)

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

Description

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.

Example#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 :

Example#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é.

Example#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().