downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

DOMNode::C14N> <DOMNode
[edit] Last updated: Fri, 10 Feb 2012

view this page in

DOMNode::appendChild

(PHP 5)

DOMNode::appendChild Ajoute un nouveau fils à la fin des fils

Description

public DOMNode DOMNode::appendChild ( DOMNode $newnode )

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::C14N> <DOMNode
[edit] Last updated: Fri, 10 Feb 2012
 
add a note add a note User Contributed Notes DOMNode::appendChild
frame at dynamiccreated dot de 01-Dec-2010 04:14
Aware dealing with DOMNodeList and appendChild() on the same Node.

If you want to replace only the children not the DOMElement itself you probably foreach childNodes-property or get the DOMElements with a for-loop and item()-method of the DOMNodeList.

You will fail if you not clone the received single DOMElement. Actually the count of the DOMNodelist will be decreased on appendChild count but appendChild seems to refer to the old Nodelist and nothing visible will happen. Cloning will help.
krisdover at hotmail dot com 31-May-2008 08:49
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
jrtayloriv at gmail dot com 30-Mar-2008 04: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>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites