| Aviso |
Esta extensión es
EXPERIMENTAL. Esto significa que el
comportamiento de esta extensión, los nombre de sus funciones y
en definitiva TODO lo documentado sobre esta extensión, puede
cambiar en una futura versión de PHP SIN AVISO. La advertencia
queda hecha, y utilizar esta extensión queda bajo su propia
responsabilidad. |
La extensión DOM XML ha sido re-estructurada en PHP 4.3.0
para mayor compatibilidad con el estándar DOM. La
extensión aun contiene varias funciones viejas, pero ellas
ya no deben ser usadas. En particular, las funciones que no son
orientadas a objetos deben evitarse.
La extensión le permite operar sobre un documento XML con
la API DOM. También ofrece una función
domxml_xmltree() para convertir el documento
XML completo en un árbol de objetos PHP. Actualmente, este
árbol debe ser considerado como de sólo-escritura -
es posible modificarlo, pero tal cosa no tendría sentido
ya que DomDocument_dump_mem() no puede
aplicarse sobre él. Por lo tanto, si desea leer un archivo
XML y escribir una versión modificada, use
DomDocument_create_element(),
DomDocument_create_text_node(),
set_attribute(), etc. y finalmente la
función DomDocument_dump_mem().
Esta extensión hace uso de la biblioteca GNOME XML. Descargue e
instale esta biblioteca. Necesita por lo menos
libxml-2.4.14. Para usar las características DOM XSLT,
puede usar la biblioteca
libxslt y las adiciones EXSLT de http://www.exslt.org/. Descargue e instale estas
bibliotecas si planea usar las características XSLT (y las
mejoras). Necesita por lo menos libxslt-1.0.18.
Esta extensión se encuentra disponible únicamente si
PHP fue configurado con --with-dom[=DIR]. Agregue --with-dom-xslt[=DIR] para incluir soporte
para DOM XSLT. DIR es el directorio de instalación de
libxslt. Agregue --with-dom-exslt[=DIR] para incluir
soporte para DOM EXSLT, en donde DIR es el directorio de
instalación de libexslt.
Nota para Usuarios de Win32:
Para habilitar este módulo en un entorno Windows, debe
copiar un archivo adicional desde el directorio de archivos DLL del
paquete binario de PHP/Win32 a la carpeta SYSTEM32 en su
máquina Windows (Ej: C:\WINNT\SYSTEM32 o C:\WINDOWS\SYSTEM32). Para PHP <=
4.2.0, copie libxml2.dll, para PHP >= 4.3.0
copie iconv.dll desde el directorio de
archivos DLL a su directorio SYSTEM32.
Existen varias funciones que no tienen lugar en el
estándar DOM y no deberían seguir siendo
usadas. Estas funciones son listadas en la siguiente tabla. La
función DomNode_append_child() ha
cambiado su comportamiento. Ahora agrega un hijo y no un
hermano. Si esto afecta su aplicación, use la
función DomNode_append_sibling(), la
cual no hace parte del conjunto DOM.
Tabla 1. Funciones obsoletas y sus reemplazos
Estas constantes están
definidas por esta extensión y estarán disponibles
solamente cuando la extensión ha sido o bien compilada dentro
de PHP o grabada dinámicamente en tiempo de ejecución.
La API del módulo sigue el estándar DOM de Nivel 2
tan fielmente como es posible. Por consiguiente, la API es
completamente orientada a objetos. Es una buena idea tener el
estándar DOM a la mano cuando se usa este
módulo. Aunque la API es orientada a objetos, existen
varias funciones que pueden ser llamadas en una forma no
orientada a objetos, pasando el objeto sobre el que debe operarse
como primer argumento. Estas funciones existen principalmente
para conservar la compatibilidad con versiones anteriores de esta
extensión, y no deberían ser usadas cuando se creen
nuevos scripts.
Esta API difiere de la API DOM oficial en dos formas. Primero,
todos los atributos de clase son implementados como funciones con
el mismo nombre. En segundo lugar, los nombres de funciones
siguen la convención de nombres de PHP. esto quiere decir
que una función DOM llamada lastChild() será
escrita como last_child().
Este módulo define un número de clases, que son
listados - incluyendo sus métodos - en las siguientes
tablas. Las clases con un equivalente en el estándar DOM
son llamadas DOMxxx.
Tabla 3. Lista de clases
| Nombre de clase | Clases padre |
|---|
| DomAttribute | DomNode |
| DomCData | DomNode |
| DomComment | DomCData : DomNode |
| DomDocument | DomNode |
| DomDocumentType | DomNode |
| DomElement | DomNode |
| DomEntity | DomNode |
| DomEntityReference | DomNode |
| DomProcessingInstruction | DomNode |
| DomText | DomCData : DomNode |
| Parser | Por el momento aun se llama DomParser |
| XPathContext | |
Tabla 4. Clase DomDocument (DomDocument : DomNode)
Tabla 5. Clase DomElement (DomElement : DomNode)
Tabla 7. Clase DomAttribute (DomAttribute : DomNode)
Tabla 8. Clase DomProcessingInstruction (DomProcessingInstruction :
DomNode)
Tabla 9. Clase Parser
| Nombre de método | Nombre de función | Anotación |
|---|
| add_chunk | Parser_add_chunk() | |
| end | Parser_end() | |
Tabla 10. Clase XPathContext
| Nombre de método | Nombre de función | Anotación |
|---|
| eval | XPathContext_eval() | |
| eval_expression | XPathContext_eval_expression() | |
| register_ns | XPathContext_register_ns() | |
Tabla 11. Clase DomDocumentType (DomDocumentType : DomNode)
La clase DomDtd es derivada de DomNode. DomComment es derivada de
DomCData.
Varios ejemplos en esta referencia requieren una cadena XML. En
lugar de repetir esta cadena en cada ejemplo, será puesta
en un archivo el cual será incluido en cada ejemplo. Este
archivo de inclusión es mostrado en la siguiente
sección de ejemplo. Alternativamente, es posible crear un
documento XML y leerlo con
DomDocument_open_file().
Ejemplo 1. Archivo de inclusión ejemplo.inc con una cadena
XML
<?php $cadena_xml = "<?xml version='1.0' standalone='yes'?> <!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd' [ <!ENTITY sp \"spanish\"> ]> <!-- lsfj --> <chapter language='en'><title language='en'>Title</title> <para language='ge'> &sp; <!-- comment --> <informaltable ID='findme' language='&sp;'> <tgroup cols='3'> <tbody> <row><entry>a1</entry><entry morerows='1'>b1</entry><entry>c1</entry></row> <row><entry>a2</entry><entry>c2</entry></row> <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row> </tbody> </tgroup> </informaltable> </para> </chapter>"; ?>
|
|