DomNode->append_child

(no version information, might be only in CVS)

DomNode->append_child --  Agrega un nuevo hijo al final del grupo de hijos

Descripción

object DomNode->append_child ( object nodo_nuevo)

Esta función agrega un hijo a una lista existente de hijos o crea una nueva lista de hijos. El hijo puede ser creado, por ejemplo, con domdocument_create_element(), domdocument_create_text() etc. o simplemente mediante el uso de otro nodo.

(PHP < 4.3) Antes de que un nuevo hijo sea agregado, éste es duplicado. Por lo tanto el nuevo hijo es una nueva copia que puede ser modificada sin cambiar el nodo que fue pasado a esta función. Si el nodo pasado tiene hijos, ellos serán duplicados también, lo que facilita la duplicación de grandes segmentos de un documento XML. El valor de retorno es el hijo agregado. Si planea realizar modificaciones posteriores sobre el hijo agregado, debe usar el nodo devuelto.

(PHP 4.3.0/4.3.1) El nuevo hijo nodo_nuevo es enlazado primero desde su contexto actual, si ya se trata de un hijo de DomNode. Por lo tanto el nodo es movido y no una copia del nodo.

(PHP >= 4.3.2) El nuevo hijo nodo_nuevo es primera separado de su contexto actual, si éste ya existe en el árbol. Por lo tanto el nodo es movido y no copiado. Este debe ser su comportamiento de acuerdo a las especificaciones del W3C. Si desea duplicar segmentos grandes de un documento XML, use DomNode->clone_node() antes de agregar.

El siguiente ejemplo agrega un nuevo nodo tipo elemento a un documento nuevo y define el atributo "align" como "left".

Ejemplo 1. Agregar un hijo

<?php
$doc
= domxml_new_doc("1.0");
$nodo = $doc->create_element("para");
$nodo_nuevo = $doc->append_child($nodo);
$nodo_nuevo->set_attribute("align", "left");
?>
El anterior ejemplo pudo ser escrito también como:

Ejemplo 2. Agregar un hijo

<?php
$doc
= domxml_new_doc("1.0");
$nodo = $doc->create_element("para");
$nodo->set_attribute("align", "left");
$nodo_nuevo = $doc->append_child($nodo);
?>
Un ejemplo más complejo se presenta a continuación. Primero busca cierto elemento, lo duplica incluyendo sus hijos y lo agrega como un hermano. Finalmente un nuevo atributo es agregado a uno de los hijos del nuevo hermano y el documento completo es volcado.

Ejemplo 3. Agregar un hijo

<?php
include("ejemplo.inc");

if (!
$dom = domxml_open_mem($cadena_xml)) {
  echo
"Ocurri&oacute; un error al analizar el documento\n";
  exit;
}

$elementos = $dom->get_elements_by_tagname("informaltable");
print_r($elementos);
$elemento = $elementos[0];

$padre = $elemento->parent_node();
$nodo_nuevo = $padre->append_child($elemento);
$hijos = $nodo_nuevo->children();
$atr = $hijos[1]->set_attribute("align", "left");

echo
"<pre>";
$archivo_xml = $dom->dump_mem();
echo
htmlentities($archivo_xml);
echo
"</pre>";
?>
El ejemplo anterior pudo crearse también con domnode_insert_before() en lugar de domnode_append_child().

Vea también domnode_insert_before(), y domnode_clone_node().