PHP Analizador XML Expat


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


¿Qué es XML?

XML se utiliza para describir datos, y su enfoque está en qué son los datos. Un archivo XML describe la estructura de los datos.

En XML, no hay etiquetas predefinidas. Debe definir sus propias etiquetas.

Para aprender más sobre XML, visite nuestroTutorial de XML。


¿Qué es Expat?

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

Hay dos tipos básicos de analizadores XML:

  • Analizadores basados en árbol: este tipo de 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 de Documento (DOM).
  • Analizadores basados en eventos: consideran 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 Expat es un analizador basado en eventos.

Los analizadores basados en eventos se centran en el contenido del documento XML, no en su estructura. Por lo tanto, los analizadores basados en eventos pueden acceder a los datos más rápido que los analizadores basados en árboles.

Vea el siguiente fragmento XML:

<from>Jani</from>

El analizador basado en eventos informa el XML anterior como una serie de tres eventos:

  • Elemento de inicio: from
  • Inicio de la sección CDATA, valor: Jani
  • Elemento de cierre: from

El ejemplo XML anterior contiene XML bien formado. Sin embargo, este ejemplo es XML no válido porque no tiene una Declaración de Tipo de Documento (DTD) asociada.

Sin embargo, al usar el analizador Expat, esto no hace ninguna diferencia. Expat es un analizador que no comprueba la validez e ignora cualquier DTD.

Como analizador XML basado en eventos y no validador, Expat es rápido y ligero, muy adecuado para aplicaciones web en PHP.

Nota:El documento XML debe estar bien formado; de lo contrario, Expat generará un error.


Instalación

Las funciones del analizador XML Expat son parte del núcleo de PHP. No es necesario instalarlas para usar estas funciones.


Archivo XML

El siguiente archivo XML se aplicará en nuestro ejemplo:

<?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>


Inicializar el analizador XML

Vamos a inicializar el analizador XML en PHP, definir manejadores para diferentes eventos XML y luego analizar este archivo XML.

Ejemplo

<?php
//Initialize the XML parser
$parser=xml_parser_create();

//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
{
switch($element_name)
{
case "NOTE":
echo "-- Note --<br>";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}

//Function to use at the end of an element
function stop($parser,$element_name)
{
echo "<br>";
}

//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}

//Specify element handler
xml_set_element_handler($parser,"start","stop");

//Specify data handler
xml_set_character_data_handler($parser,"char");

//Open XML file
$fp=fopen("test.xml","r");

//Read data
while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}

//Free the XML parser
xml_parser_free($parser);
?>

El código anterior generará:

-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!

Cómo funciona:

  1. Inicializar el analizador XML con la función xml_parser_create()
  2. Crear funciones que se combinen con los diferentes manejadores de eventos
  3. Agregar la función xml_set_element_handler() para definir qué función se ejecuta cuando el analizador encuentra etiquetas de inicio y cierre
  4. Agregar la función xml_set_character_data_handler() para definir qué función se ejecuta cuando el analizador encuentra datos de caracteres
  5. Analizar el archivo 'test.xml' con la función xml_parse()
  6. En caso de error, agregar la función xml_error_string() para convertir el error XML en una descripción de texto
  7. Llamar a la función xml_parser_free() para liberar la memoria asignada a la función xml_parser_create()

Más información sobre el analizador Expat de PHP

Para obtener más información sobre las funciones Expat de PHP, visite nuestroManual de referencia del analizador XML de PHP。

Otras extensiones