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

class DOMNode {

DOMNode append_child ( DOMNode nodo_nuevo )

}

Esta función agrega un hijo a una lista existente de hijos o crea una nueva lista de hijos.

Lista de parámetros

nodo_nuevo

El nodo que está siendo agregado. Puede ser creado p.ej. con DomDocument->create_element, DomDocument->create_text_node etc. o simplemente usando cualquier otro nodo.

Nota: No es posible agregar un DOMAttribute usando este método. Use DomElement->set_attribute() en su lugar.

Valores retornados

Devuelve el nodo agregado en caso de éxito, o FALSE si ocurre un error.

Registro de cambios

VersiónDescripción
4.3.0 Ya no es posible insertar un nodo desde otro documento.
4.3.0 Antes de PHP 4.3.0, el nuevo hijo es duplicado antes de agregarse. 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.
4.3.0 y 4.3.1 El nuevo hijo nodo_nuevo es separado primero de su contexto actual, si ya se trata de un hijo de DomNode. Por lo tanto el nodo_nuevo es movido y no copiado. Este es el comportamiento de acuerdo a las especificaciones del W3C. Si necesita el comportamiento antiguo, use DomNode->clone_node antes de agregar.
4.3.2 El nuevo hijo nodo_nuevo es primero separado de su contexto actual, si éste ya existe en el árbol. Se aplican las mismas reglas.

Ejemplos

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");

$archivo_xml = $dom->dump_mem();
echo
htmlentities($archivo_xml);
?>

El ejemplo anterior pudo escribirse también con DomNode->insert_before en lugar de DomNode->append_child.

Migración a PHP 5

Debe usar DOMNode->appendChild().

Ver también

DomNode->insert_before
DomNode->clone_node

Hosting by: hurra.com
Generated: 2007-01-26 18:00:57