DomNode->append_child

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