DomNode->append_child
(no version information, might be only in CVS)
DomNode->append_child --
Accoda un nuovo figlio
Descrizione
object
DomNode->append_child ( object nuovo_nodo)
Questa funzione accoda un nodo figlio ad un elenco pre-esistente di figli oppure
crea una nuova lista di figli. Il nodo figlio può essere creato con funzioni tipo
domdocument_create_element(),
domdocument_create_text() ecc. oppure usando un qualsiasi
altro nodo.
(PHP < 4.3) Prima che sia aggiunto un nuovo nodo questo viene duplicato. Quindi
il nuovo nodo è una nuova copia che può essere modificata senza variare il
nodo passato alla funzione. Se il nodo ha dei nodi figli, anche
questi saranno duplicati, ciò rende facile duplicare grandi parti
di un documento xml. Il valore restituito è il nodo figlio
accodato. Se si prevede di fare ulteriori modifiche al nodo aggiunto,
occorre usare il nodo restituito.
(PHP 4.3.0/4.3.1) Il nuovo nodo figlio nuovo_nodo viene prima rimosso
dal contesto esistente, se ne è già un figlio di DomNode.
Quindi viene mosso e non più copiato.
(PHP >= 4.3.2) Il nuovo nodo figlio nuovo_nodo viene prima rimosso
dal contesto esistente, se ne esiste uno nel documento.
Quindi viene mosso e non più copiato. Questo comportamento si attiene
alle specifiche W3C. Se si desidera duplicare una grande parte di un documento
xml, occorre utilizzare DomNode->clone_node() prima di accodare il nodo.
Nel seguente esempio si accoderà un nuovo nodo ad un documento
e si imposterà l'attributo "align" a "left".
Esempio 1. Aggiunta di un nodo figlio <?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?> |
|
L'esempio precedente può anche essere scritto:
Esempio 2. Aggiunta di un nodo figlio <?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?> |
|
Il seguente è un esempio più complesso. Prima cerca un dato elemento,
quindi lo si duplica, compresi i suoi figli, lo si aggiunge come un fratello.
Infine si aggiunge un attributo ad uno dei figli del nuovo nodo
e quindi si scarica il documento.
Esempio 3. Aggiunta di un nodo figlio <?php
include("example.inc");
if(!$dom = domxml_open_mem($xmlstr)) {
echo "Error while parsing the document\n";
exit;
}
$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];
$parent = $element->parent_node();
$newnode = $parent->append_child($element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");
echo "<PRE>";
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
echo "</PRE>";
?> |
|
L'esempio precedente può anche essere svolto con
domnode_insert_before() invece di
domnode_append_child().
Vedere anche domnode_insert_before(),
domnode_clone_node().