Convertir XML a matriz asociativa en PHP

Convert Xml Associative Array Php



XML (Lenguaje de marcado extensible) es un tipo de lenguaje de marcado que se utiliza para almacenar los datos en un formato legible por humanos. Es diferente de otros lenguajes de marcado. Cada etiqueta de este idioma está definida por el usuario. El uso de XML es la mejor solución para almacenar una pequeña cantidad de datos cuando no desea utilizar ninguna base de datos para almacenar datos. Se puede acceder fácilmente a los datos del documento XML y utilizarlos en cualquier aplicación web mediante un script PHP. En este tutorial se muestra cómo se puede analizar y almacenar el documento XML en una matriz asociativa.

Funciones necesarias

Algunas funciones integradas se utilizan para convertir el contenido XML en una matriz PHP asociativa. Los propósitos de las diferentes funciones se explican a continuación.







file_get_contents ():



Esta función devuelve los datos de la cadena convirtiendo cualquier dato XML. Toma cualquier nombre de archivo XML como argumento.



simplexml_load_string ():





Esta función devuelve el objeto XML convirtiendo los datos de la cadena XML. Toma datos de cadena XML como argumento.

simplexml_load_file ():



Esta función devuelve el objeto XML convirtiendo el contenido del archivo XML. Toma el nombre del archivo XML como argumento.

SimpleXMLElement ():

Se utiliza para crear un objeto XML a partir de datos XML. Toma el valor del contenido XML como argumento.

json_encode ():

Devuelve el objeto JSON convirtiendo el objeto XML. Toma la variable del objeto XML como argumento.

json_decode ():

Devuelve la matriz PHP asociativa mediante la conversión de datos JSON. Toma la variable de objeto JSON como argumento.

Crear archivo XML

Se le pedirá que cree un archivo XML o defina datos XML en el script para conocer la forma de convertir datos XML en una matriz PHP asociativa. Cree un archivo XML llamado cursos.xml con el siguiente contenido y guárdelo en la ubicación donde está el script PHP. El archivo contiene elementos secundarios en un elemento principal. Entonces, se generará una matriz asociativa bidimensional después de convertir el siguiente archivo XML en una matriz PHP.

cursos.xml

versión='1.0'?>
>
>Programación web>
>6 meses>
>
>
>La alegría de la programación PHP>
>Alan Forbes>
>Isla Ciruela>
>
>
>PHPY MySQL novato a ninja
Tom Butler y Kevin Yank
SitePoint


Head First PHP y MySQL
Lynn Beighley y Michael Morrison
O'Reilly


Ejemplo 1: convertir el contenido del archivo XML en una matriz asociativa sin comprobar el error

El siguiente script muestra los usos de las funciones file_get_contents () y simplexml_load_string () para crear un objeto XML. Aquí, el archivo cursos.xml se utiliza para la conversión que se creó antes. A continuación, se utilizan las funciones json_encode () y json_decode () para obtener la matriz asociativa después de convertir el contenido del archivo XML. Si no existe ningún error en el contenido XML, el siguiente script no mostrará ningún error. Aquí,

  La etiqueta se utiliza para imprimir la matriz de forma formateada.



// Definir el archivo XML existente
$ xml = 'cursos.xml';

// Leer el contenido completo del archivo XML como cadena XML
$ xmlData = file_get_contents ($ xml);

// Convertir datos de cadena XML en objeto XML
$ xmlObject = simplexml_load_string ($ xmlData);

// Convertir un objeto XML en un objeto JSON
$ jsonObject = json_encode ($ xmlObject);

// Convierta el objeto JSON en una matriz asociativa
$ assArray = json_decode ($ jsonObject, cierto);

// Imprime la estructura de la matriz asociativa
echo '

|_+_|
'
;

?>

Producción:

La siguiente salida aparecerá después de ejecutar el script PHP. Aquí, se genera una matriz bidimensional basada en el contenido del archivo XML, cursos.xml.

Ejemplo 2: convertir el contenido del archivo XML en una matriz asociativa con error de verificación

Es mejor comprobar el error al convertir XML en una matriz asociativa. Ayudará al codificador a depurar el código si la verificación de errores está implementada en el script. La siguiente secuencia de comandos muestra las formas de convertir el contenido del archivo XML en una matriz asociativa utilizando la función simplexml_load_file () con manejo de errores. La función libxml_use_internal_errors () se usa con el valor TRUE para habilitar el manejo de errores. Si el contenido del archivo XML que se utiliza en el script contiene algún error, la función simplexml_load_file () devolverá falso y el mensaje de error se imprimirá utilizando la función libxml_get_errors (). Si no existe ningún error en el archivo XML, el contenido del archivo se convertirá correctamente en una matriz asociativa bidimensional.



// Habilita el manejo de errores del usuario
libxml_use_internal_errors (CIERTO);

// Crear objeto XML
$ objXml = simplexml_load_file ('cursos.xml');

// Error de impresión si el objeto XML devuelve falso
si ($ objXml === FALSO) {
echo 'Hubo errores al analizar el archivo XML. orte';
para cada( libxml_get_errors () como $error) {
echo $error->mensaje;
}
Salida ;
}

// Convertir un objeto XML en un objeto JSON
$ objJson = json_encode ($ objXml);
// Convierta el objeto JSON en una matriz asociativa
$ assarr = json_decode ($ objJson, CIERTO);

// Imprime la estructura de la matriz asociativa
echo '|_+_|';

?>

Producción:

La siguiente salida aparecerá después de ejecutar el script PHP. Aquí, no existe ningún error en el archivo XML. Entonces, se ha generado una matriz bidimensional como el ejemplo anterior basado en el contenido del archivo XML, cursos.xml.

Ejemplo 3: convertir contenido XML en una matriz asociativa

El siguiente script muestra la forma de convertir datos XML en una matriz asociativa mediante la función SimpleXMLElement (). En el script, el contenido XML se almacena en una variable denominada $ xml que se utiliza como argumento de la función, SimpleXMLElement (). A continuación, se utilizan las funciones json_encode () y json_decode () para obtener la matriz asociativa después de convertir el contenido del archivo XML.



// Definir la variable XML
$ xml = <<


[correo electrónico protegido]

12 / A, Dhanmondi
Dhaka



[correo electrónico protegido]

156, motivo
Dhaka



[correo electrónico protegido]

21/B, Mogbazar
Dhaka



XML
;

// Crear objeto XML
$ xmlObject = nuevoSimpleXMLElement($ xml);
// Crear objeto JSON
$ jsonObject = json_encode ($ xmlObject);
// Convierta el objeto JSON en una matriz asociativa
$ assArray = json_decode ($ jsonObject, cierto);

// Imprime la estructura de la matriz asociativa
echo '|_+_|';

?>

Producción:

La siguiente salida aparecerá después de ejecutar el script PHP. Aquí, se genera una matriz bidimensional basada en el contenido de la variable XML, $ xml.

Conclusión:

Había tres formas diferentes de convertir contenido XML en una matriz asociativa que se mostró en este tutorial. Esto ayudará a los lectores a conocer la forma de trabajar con datos XML y analizar los datos del contenido XML mediante el uso de un script PHP fácilmente.