Convertir XML a una matriz asociativa en PHP

Convertir XML a una matriz asociativa en 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 idiomas 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 usar ninguna base de datos para almacenar datos. Los datos del documento XML se pueden acceder y utilizar fácilmente en cualquier aplicación web utilizando un script PHP. En este tutorial se puede analizar y almacenar el documento XML en una matriz asociativa.

Funciones necesarias

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

file_get_contents ()::

Esta función devuelve los datos de cadena al convertir cualquier datos XML. Toma cualquier nombre de archivo XML como argumento.

simplexml_load_string ():

Esta función devuelve el objeto XML convirtiendo los datos de cadena XML. Se necesitan 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 usa para crear un objeto XML a partir de datos XML. Toma el valor de contenido de 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 convirtiendo los datos JSON. Toma la variable del objeto JSON como argumento.

Crear archivo XML

Deberá crear un archivo XML o definir datos XML en el script para conocer la forma en la conversión de datos XML en una matriz PHP asociativa. Crear 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 infantiles bajo un elemento principal. Por lo tanto, se generará una matriz asociativa bidimensional después de convertir el siguiente archivo XML en una matriz PHP.

cursos.xml



Programación web
6 meses


La alegría de la programación PHP
Alan Forbes
Isla de ciruela


Php & mysql novato a ninja
Tom Butler y Kevin Yank
Punto de sitio


Cabeza primero php y mysql
Lynn Beighley y Michael Morrison
O'Reilly


Ejemplo-1: Convierta el contenido del archivo XML en una matriz asociativa sin verificar el error

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

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

// Defina el archivo XML existente
$ xml = "cursos.xml ";
// Lea el contenido completo del archivo XML como cadena XML
$ xmldata = file_get_contents ($ xml);
// Convertir datos de cadena XML en objeto XML
$ xmlObject = simpxml_load_string ($ xmldata);
// Convertir el objeto XML en objeto JSON
$ jsonObject = json_encode ($ xmlObject);
// Convertir el objeto JSON en una matriz asociativa
$ ASSArray = json_decode ($ jsonObject, true);
// Imprima la estructura de la matriz asociativa
eco "

";
print_r ($ AssArray);
eco "

";
?>

Producción:

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

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

Es mejor verificar el error al convertir XML en una matriz asociativa. Ayudará al codificador a depurar el código si la verificación de errores se implementa en el script. El siguiente script muestra las formas de convertir el contenido del archivo XML en una matriz asociativa utilizando la función simpxml_load_file () con manejo de errores. La función libxml_use_internal_errors () se usa con valor real para habilitar el manejo de errores. Si el contenido del archivo XML que se usa en el script contiene cualquier error, entonces simplexml_load_file () la función devolverá False, y el mensaje de error se imprimirá utilizando libxml_get_errors () función. Si no existe un error en el archivo XML, entonces el contenido del archivo se convertirá correctamente en una matriz asociativa bidimensional.

// habilitar el manejo de errores de usuario
libxml_use_internal_errors (true);
// Crear objeto XML
$ objxml = simpxml_load_file ("cursos.xml ");
// Error de impresión si el objeto XML devuelve falso
if ($ objxml === falso)
echo "Hubo errores analizando el archivo XML.\norte";
foreach (libxml_get_errors () como $ error)
echo $ error-> mensaje;

salida;

// Convertir el objeto XML en objeto JSON
$ objjson = json_encode ($ objxml);
// Convertir el objeto JSON en una matriz asociativa
$ ASSARR = JSON_DECODE ($ objjson, true);
// Imprima la estructura de la matriz asociativa
eco "
";
print_r ($ Assarr);
eco "
";
?>

Producción:

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

Ejemplo-3: Convierta el contenido de XML en una matriz asociativa

El siguiente script muestra la forma de convertir los datos XML en una matriz asociativa utilizando la función SimpleMLelement (). En el script, el contenido de XML se almacena en una variable llamada $ xml que se usa como argumento de la función, simplexmlelement (). A continuación, la función JSON_ENCODE () y JSON_DECODE () se utilizan para obtener la matriz asociativa después de convertir el contenido del archivo XML.

// Defina la variable XML
$ xml = <<


[email protected]

12/A, Dhanmondi
Dhaka



[email protected]

156, Motijeel
Dhaka



[email protected]

21/b, Mogbazar
Dhaka



Xml;
// Crear objeto XML
$ xmlObject = new SimplexMLelement ($ xml);
// Crear objeto json
$ jsonObject = json_encode ($ xmlObject);
// Convertir el objeto JSON en una matriz asociativa
$ ASSArray = json_decode ($ jsonObject, true);
// Imprima la estructura de la matriz asociativa
eco "
";
print_r ($ AssArray);
eco "
";
?>

Producción:

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

Conclusión:

Había tres formas diferentes de convertir el 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 utilizando un script PHP fácilmente.