Forum und email

Funzioni DOM XML

Introduzione

Nella versione 4.3.0 di PHP l'estensione DOM XML è stata rivista in modo da fornire una migliore adesione allo standard DOM. Il modulo contiene ancora diverse vecchie funzioni, ma non dovrebbero essere più usate. Specialmente quelle funzioni non orientate agli oggetti.

Questo modulo permette di operare con un documento XML utilizzando API DOM. Inoltre viene fornita una funzione, domxml_xmltree(), per convertire l'intero documento XML in un albero di oggetti PHP. Attualmente questo albero dovrebbe essere considerato di sola lettura, è possibile modificarlo, ma questa operazione non avrebbe senso dato che la funzione DomDocument_dump_mem() non può essere applicata all'albero. Pertanto se si desidera leggere un file XML e scriverne una versione modificata, occorre utilizzare le funzioni DomDocument_create_element(), DomDocument_create_text_node(), set_attribute(), ecc. ed infine DomDocument_dump_mem().

Nota: Questo modulo è stato spostato nel repository » PECL e non è più rilasciato con il PHP dalla versione 5.0.0.

Nota: Questo modulo non è più considerato sperimentale. Tuttavia non sarà rilasciato con PHP 5, e sarà solo distribuito con PHP 4. Se si ha bisogno del supporto DOM XML in PHP 5, si può utilizzare il modulo DOM. Questa estensione domxml non è compatibile con DOM.

Requisiti

Questo modulo utilizza la libreria » GNOME XML library. Fare il download ed installare questa libreria. Occorre avere almeno la libxml-2.4.14. Per potere utilizzare le caratteristiche previste nel DOM XSLT occorre utilizzare » libxslt library ed EXSLT enhancements da » https://www.exslt.org/. Scaricare ed installare queste librerie se si prevede di utilizzare la funzioni avanzate di XSLT. Occorre almeno la versione libxslt-1.0.18.

Installazione

This » PECL extension is not bundled with PHP. Informazioni per l'installazione di questa estensione PECL possono essere trovate nel capitolo del manuale intitolato Installazione delle estensioni PECL. Informazioni aggiuntive come nuove release, download, file sorgenti, informazioni del manutentore e un CHANGELOG possono essere trovate qui: » https://pecl.php.net/package/domxml.

In PHP 4 this PECL extensions source can be found in the ext/ directory within the PHP source or at the PECL link above. Questo modulo è disponibile soltanto se il PHP è stato configurato con --with-dom=[DIR]. Aggiungere --with-dom-xslt[=DIR] per includere il supporto al DOM XSLT support. DIR indica la directory in cui è installato libxslt. Aggiungere --with-dom-exslt[=DIR] per includere il supporto al DOM EXSLT, dove DIR indica la directory in cui è installato libexslt.

Gli utenti Windows devono abilitare php_domxml.dll dal php.ini per potere utilizzare queste funzioni. In PHP 4 this DLL resides in the extensions/ directory within the PHP Windows binaries download. La DLL per questa estensione PECL può essere scaricata dalla pagina » PHP Downloads oppure da » https://pecl4win.php.net/ Inoltre, per potere utilizzare queste funzioni, occorre che una DLL aggiuntiva sia presente nella PATH del sistema. In PHP 4 questa DLL si trova nella directory dlls/. Il suo nome: Per PHP <= 4.2.0, è libxml2.dll. Per PHP >= 4.3.0, è iconv.dll. E dal PHP 5.0.0 iconv è compilata nell'eseguibile PHP per Windows, percui non vi è più bisogno di dll aggiuntive.

Funzioni deprecate

Esistono alcune funzioni che non rientrano nello standard DOM e quindi non dovrebbero essere più utilizzate come evidenziato nella tabella seguente. La funzione DomNode_append_child() ha modificato il suo comportamento. Attualmente aggiunge un figlio e non un elemento fratello. Se ciò crea problemi alle applicazioni si può usare la funzione non DOM

Funzioni deprecate e loro sostituti
Vecchia funzione Nuova funzione
xmldoc domxml_open_mem()
xmldocfile domxml_open_file()
domxml_new_xmldoc domxml_new_doc()
domxml_dump_mem DomDocument_dump_mem()
domxml_dump_mem_file DomDocument_dump_file()
DomDocument_dump_mem_file DomDocument_dump_file()
DomDocument_add_root DomDocument_create_element() seguita da DomNode_append_child()
DomDocument_dtd DomDocument_doctype()
DomDocument_root DomDocument_document_element()
DomDocument_children DomNode_child_nodes()
DomDocument_imported_node Nessun sostituto.
DomNode_add_child Creare un nuovo nodo con, ad esempio, DomDocument_create_element() e aggiungere il figlio con DomNode_append_child().
DomNode_children DomNode_child_nodes()
DomNode_parent DomNode_parent_node()
DomNode_new_child Creare un nuovo nodo con, ad esempio, DomDocument_create_element() e aggiungere il figlio con DomNode_append_child().
DomNode_get_content Il contenuto è semplicemente un nodo di testo ed è accessibile tramite DomNode_child_nodes().
DomNode_set_content Il contenuto è semplicemente un nodo di testo e può essere aggiunto con DomNode_append_child().

Costanti predefinite

Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione è stata compilata nel PHP o se è stata caricata dinamicamente a runtime.

Costanti XML
Costante Valore Descrizione
XML_ELEMENT_NODE (integer) 1 Il nodo è un elemento
XML_ATTRIBUTE_NODE (integer) 2 Il nodo è un attributo
XML_TEXT_NODE (integer) 3 Il nodo è un segmento di testo
XML_CDATA_SECTION_NODE (integer) 4  
XML_ENTITY_REF_NODE (integer) 5  
XML_ENTITY_NODE (integer) 6 Il nodo è un'entità come, ad esempio, &nbsp;
XML_PI_NODE (integer) 7 Il nodo è una istruzione di processamento
XML_COMMENT_NODE (integer) 8 Il nodo è un commento
XML_DOCUMENT_NODE (integer) 9 Il nodo è un documento
XML_DOCUMENT_TYPE_NODE (integer) 10  
XML_DOCUMENT_FRAG_NODE (integer) 11  
XML_NOTATION_NODE (integer) 12  
XML_GLOBAL_NAMESPACE (integer) 1  
XML_LOCAL_NAMESPACE (integer) 2  
XML_HTML_DOCUMENT_NODE (integer)    
XML_DTD_NODE (integer)    
XML_ELEMENT_DECL_NODE (integer)    
XML_ATTRIBUTE_DECL_NODE (integer)    
XML_ENTITY_DECL_NODE (integer)    
XML_NAMESPACE_DECL_NODE (integer)    
XML_ATTRIBUTE_CDATA (integer)    
XML_ATTRIBUTE_ID (integer)    
XML_ATTRIBUTE_IDREF (integer)    
XML_ATTRIBUTE_IDREFS (integer)    
XML_ATTRIBUTE_ENTITY (integer)    
XML_ATTRIBUTE_NMTOKEN (integer)    
XML_ATTRIBUTE_NMTOKENS (integer)    
XML_ATTRIBUTE_ENUMERATION (integer)    
XML_ATTRIBUTE_NOTATION (integer)    
XPATH_UNDEFINED (integer)    
XPATH_NODESET (integer)