Saltar al contenido

xml_parse_into_struct()

La función xml_parse_into_struct() es una función integrada de PHP que analiza datos XML en un array multidimensional. Pertenece a la extensión XML Parser y proporciona una interfaz similar a SAX para convertir XML en un array estructurado que se puede manipular fácilmente. Asegúrese de que la extensión xml esté habilitada en su configuración php.ini antes de usar esta función.

La función es útil cuando necesita extraer datos de un archivo XML, por ejemplo, para convertir datos XML a otro formato o para analizar la estructura de un archivo XML.

Sintaxis

La sintaxis de la función xml_parse_into_struct() es la siguiente:


php
xml_parse_into_struct($parser, $data, &$values, &$index)

Donde $parser es el recurso del analizador XML devuelto por xml_parser_create(), $data son los datos XML que se van a analizar, $values es un array que contendrá los datos analizados y $index es un array que contendrá los valores de índice de los datos analizados.

Ejemplos de uso

Veamos algunos ejemplos prácticos del uso de xml_parse_into_struct() en PHP.

Ejemplo 1: Análisis de datos XML en un array estructurado

Suponga que tiene un archivo XML data.xml que desea analizar en un array estructurado. Puede usar la función xml_parse_into_struct() para analizar los datos XML, de la siguiente manera:


php
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
$xml_data = file_get_contents("data.xml");
$values = array();
$index = array();
if (!xml_parse_into_struct($xml_parser, $xml_data, $values, $index)) {
  $error_message = xml_error_string(xml_get_error_code($xml_parser));
  $error_line = xml_get_current_line_number($xml_parser);
  echo "XML Parsing Error: $error_message at line $error_line";
}
xml_parser_free($xml_parser);

Este código crea un analizador XML usando xml_parser_create() y desactiva la conversión de mayúsculas a minúsculas. Lee el archivo XML y almacena su contenido en $xml_data. Inicializa los arrays $values e $index vacíos y luego llama a xml_parse_into_struct() para poblarlos. Si el análisis falla, recupera el código y el mensaje de error, y muestra un mensaje de error detallado con el número de línea. Finalmente, libera la memoria del analizador con xml_parser_free().

Ejemplo 2: Análisis de la estructura de un archivo XML

Suponga que desea analizar la estructura de data.xml inspeccionando los elementos analizados. Después del análisis, el array $values contiene arrays asociativos para cada elemento XML con claves como tag, type, value y level. Puede iterar sobre este array para examinar la estructura del documento:

php
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
$xml_data = file_get_contents("data.xml");
$values = array();
$index = array();
if (!xml_parse_into_struct($xml_parser, $xml_data, $values, $index)) {
  $error_message = xml_error_string(xml_get_error_code($xml_parser));
  $error_line = xml_get_current_line_number($xml_parser);
  echo "XML Parsing Error: $error_message at line $error_line";
}
xml_parser_free($xml_parser);

foreach ($values as $value) {
  if ($value["type"] == "open") {
    echo "Start element: " . $value["tag"] . "<br/>";
  } else if ($value["type"] == "close") {
    echo "End element: " . $value["tag"] . "<br/>";
  }
}

Este código reutiliza la configuración de análisis estándar. Después del análisis, itera sobre el array $values utilizando un bucle foreach. Verifica la clave type para cada elemento: si es "open", imprime la etiqueta de inicio; si es "close", imprime la etiqueta de cierre. Este enfoque proporciona una manera sencilla de analizar la estructura jerárquica de un archivo XML utilizando los datos analizados.

Conclusión

En este artículo, hemos discutido la función xml_parse_into_struct() de PHP y cómo se puede usar para analizar datos XML en un array estructurado. Hemos explicado qué hace la función, su sintaxis y proporcionado ejemplos de cómo puede usarse en escenarios prácticos. Siguiendo estos ejemplos, puede analizar fácilmente datos XML, extraer datos de archivos XML, transformar datos XML a otro formato o analizar la estructura de un archivo XML en sus aplicaciones PHP.

Práctica

¿Qué hace la función de PHP xml_parse_into_struct()?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.