PHP XML DOM


El analizador DOM integrado hace posible procesar documentos XML en PHP.


¿Qué es el DOM?

El W3C DOM proporciona un conjunto estándar de objetos para documentos HTML y XML, así como una interfaz estándar para acceder y manipular estos documentos.

El W3C DOM se divide en diferentes partes (Core, XML y HTML) y diferentes niveles (DOM Level 1/2/3):

  • Core DOM - define un conjunto estándar de objetos para cualquier documento estructurado
  • XML DOM - define un conjunto estándar de objetos para documentos XML
  • HTML DOM - define un conjunto estándar de objetos para documentos HTML

Para obtener más información sobre XML DOM, visite nuestroTutorial de XML DOM。


Parseo XML

Para leer y actualizar - crear y procesar - un documento XML, necesita un analizador XML.

Hay dos tipos básicos de analizadores XML:

  • Analizador basado en árboles: este analizador convierte el documento XML en una estructura de árbol. Analiza todo el documento y proporciona acceso a los elementos del árbol, como el Modelo de Objetos del Documento (DOM).
  • Analizador basado en eventos: trata el documento XML como una serie de eventos. Cuando ocurre un evento específico, el analizador llama a una función para procesarlo.

El analizador DOM es un analizador basado en árboles.

Observe el siguiente fragmento de documento XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>Jani</from>

XML DOM trata el XML anterior como una estructura de árbol:

  • Nivel 1: documento XML
  • Nivel 2: elemento raíz: <from>
  • Nivel 3: elemento de texto: 'Jani'

Instalación

Las funciones del analizador DOM XML son parte del núcleo de PHP. Se pueden usar sin necesidad de instalación.


Archivo XML

El siguiente archivo XML se utilizará en nuestros ejemplos:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


Cargar y mostrar XML

Necesitamos inicializar el analizador XML, cargar el XML y mostrarlo:

Ejemplo

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();
?>

El código anterior mostrará:

ToveJaniReminder Don't forget me this weekend!

Si ve el código fuente en la ventana del navegador, verá el siguiente HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

El ejemplo anterior crea un objeto DOMDocument y carga el XML de 'note.xml' en este objeto de documento.

La función saveXML() coloca el documento XML interno en una cadena, de modo que podamos mostrarlo.


Recorrer XML

Vamos a inicializar el analizador XML, cargar el XML y recorrer todos los elementos del elemento <note>:

Ejemplo

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
    print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>

El código anterior mostrará:

#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =

En el ejemplo anterior, puede ver que hay nodos de texto vacíos entre cada elemento.

Cuando se genera XML, normalmente contiene espacios en blanco entre los nodos. El analizador XML DOM los trata como elementos normales; si no les presta atención, a veces pueden causar problemas.


Para obtener más información sobre XML DOM, visite nuestroTutorial de XML DOM。

Otras extensiones