El parador XML Expat integrado permite procesar documentos XML en PHP.
El analizador de Expat XML
El analizador de Expat es un analizador de eventos. Mira la siguiente fracción XML:
<from>Jani</from>
Un analizador basado en eventos reporta el XML anterior como una serie de tres eventos:
- Espectro de inicio: from
- Inicia CDATA sección, valor: Jani
- Esgrimo cercano: from
Las funciones de XML Expat Parser son parte del núcleo PHP. No hay instalación necesaria para el uso de estas funciones.
El archivo XML "note.xml" se utilizará en el ejemplo siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Este archivo XML representa una nota simple. Contiene elementos como "to", "from", "heading" y "body", cada uno con su respectivo contenido. Este tipo de estructura es común en archivos XML, donde los datos se organizan en una jerarquía de elementos.
El archivo comienza con la declaración XML <?xml version="1.0" encoding="UTF-8"?>
, que especifica la versión de XML y la codificación de caracteres utilizada. Luego, el elemento raíz "note" contiene los demás elementos.
Cada elemento está delimitado por etiquetas de apertura y cierre, como <to>Tove</to>
. El contenido entre las etiquetas es el valor del elemento. En este caso, "Tove" es el valor del elemento "to".
Este archivo "note.xml" será utilizado en los ejemplos siguientes para demostrar cómo el analizador XML Expat procesa y maneja los datos XML.
Queremos inicializar el parser XML Expat en PHP, definir algunos manejadores para diferentes eventos XML, y luego analizar el 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("note.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);
?>
Ejemplo explicado:
- Inicializa el analizador XML con la función
xml_parser_create()
. - Crea funciones para usar con los diferentes encargados de eventos.
- Añade la función
xml_set_element_handler()
para especificar qué función se ejecutará cuando el analizador encuentre las etiquetas de apertura y cierre. - Añade la función
xml_set_character_data_handler()
para especificar qué función se ejecutará cuando el analizador encuentre datos de caracteres. - Analiza el archivo "note.xml" con la función
xml_parse()
. - En caso de error, añade la función
xml_error_string()
para convertir un error XML a una descripción textual. - Llama a la función
xml_parser_free()
para liberar la memoria asignada con la funciónxml_parser_create()
.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias