(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ó 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().