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

search for in the

DOMNode::cloneNode> <DOMNode
Last updated: Fri, 20 May 2011

view this page in

DOMNode::appendChild

(PHP 5)

DOMNode::appendChild Añade un nuevo hijo al final de los hijos

Descripción

DOMNode DOMNode::appendChild ( DOMNode $newnode )

Esta función añade un hijo a la lista de hijos existentes o crea una nueva lista. El hijo puede ser recuperado con, p.ej., DOMDocument::createElement(), DOMDocument::createTextNode() etc. o simplemente usando cualquier otro nodo.

Parámetros

newnode

El hijo añadido.

Valores devueltos

El nodo añadido.

Errores/Excepciones

DOM_NO_MODIFICATION_ALLOWED_ERR

Lanzado si este nodo es de sólo lectura o si el padre previo del nodo a ser insertado es de sólo lectura.

DOM_HIERARCHY_REQUEST_ERR

Lanzado si este nodo es de un tipo de no permite hijos del tipo del nodo newnode, o si el nodo a añadir es uno de los progenitores del nodo o si es el nodo en sí.

DOM_WRONG_DOCUMENT_ERR

Lanzado si newnode fue creado desde un documento diferente del que creó este nodo.

Ejemplos

El siguiente ejemplo añadirá un nuevo nodo elemento a un nuevo documento.

Example #1 Añadir un hijo

<?php

$doc 
= new DOMDocument;

$node $doc->createElement("para");
$newnode $doc->appendChild($node);

echo 
$doc->saveXML();
?>

Ver también



DOMNode::cloneNode> <DOMNode
Last updated: Fri, 20 May 2011
 
add a note add a note User Contributed Notes DOMNode::appendChild
frame at dynamiccreated dot de 01-Dec-2010 12: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 01-Jun-2008 03: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 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>

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