Accede a todo EDteam con un único pago¡Sube a premium!

Cómo convertir archivos XML a objetos PHP

Algunas API, principalmente las contables, nos devuelven código XML que debemos leer para generar facturas, convirtiéndolo a PHP.

Diseño web
2 minutos
Hace 6 años
Cómo convertir archivos XML a objetos PHP

Hola gente del futuro.

Algunas API nos entregan información en formato XML, por ejemplo facturas que tenemos que leer para generar un PDF e imprimir para cumplir con sus normas contables. Los archivos XML son archivos de texto que podemos leer como cualquier txt, sin embargo, con PHP tenemos herramientas que nos facilitan las cosas.

En esta ocasión vamos a ver cómo convertir un documento XML en un objeto PHP.

Se requiere tener activa la extensión libxml, checa tu archivo php.ini.

Vamos a suponer que tenemos el archivo mi-archivo.xml en nuestro servidor:

1<?xml version='1.0' standalone='yes'?> 2<movies> 3 <movie> 4 <title>PHP: Behind the Parser</title> 5 <characters> 6 <character> 7 <name>Ms. Coder</name> 8 <actor>Onlivia Actora</actor> 9 </character> 10 <character> 11 <name>Mr. Coder</name> 12 <actor>El ActÓr</actor> 13 </character> 14 </characters> 15 <plot> 16 So, this language. It's like, a programming language. Or is it a 17 scripting language? All is revealed in this thrilling horror spoof 18 of a documentary. 19 </plot> 20 <great-lines> 21 <line>PHP solves all my web problems</line> 22 </great-lines> 23 <rating type="thumbs">7</rating> 24 <rating type="stars">5</rating> 25 </movie> 26</movies> 27

Para convertirlo en un objeto PHP usamos la función simplexml\_load\_file():

1// checha que el archivo exista 2if (file_exists('mi-archivo.xml')) { 3 $xml = simplexml_load_file('mi-archivo.xml'); 4 print_r($xml); 5} else { 6 exit('No existe el archivo mi-archivo.xml'); 7} 8

El resultado que obtenemos es un objeto SimpleXMLElement:

SimpleXMLElement Object
(
    [movie] => SimpleXMLElement Object
        (
            [title] => PHP: Behind the Parser
            [characters] => SimpleXMLElement Object
                (
                    [character] => Array
                        (
                            [0] => SimpleXMLElement Object
                                (
                                    [name] => Ms. Coder
                                    [actor] => Onlivia Actora
                                )

                            [1] => SimpleXMLElement Object
                                (
                                    [name] => Mr. Coder
                                    [actor] => El Actor
                                )

                        )

                )

            [plot] => 
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  
            [great-lines] => SimpleXMLElement Object
                (
                    [line] => PHP solves all my web problems
                )

            [rating] => Array
                (
                    [0] => 7
                    [1] => 5
                )

        )

)

Entonces podemos acceder a cualquiera de las propiedades, por ejemplo, para obtener el título de la película:

1$xml->movie[0]->title; 2

El cero es porque en nuestro XML podemos tener múltiples películas, te invito a probar, agrega tantas películas como quieras y crea el código necesario para imprimir el listado de películas, es decir, sus títulos, comparte tu solución en Twitter con mención a @danielromeroauk.

La práctica hace al maestro, espero que me dejes ver tu solución. :)

Eso es todo por ahora gente del futuro, nos leemos en el siguiente artículo.

Comentarios de los usuarios

Pregunta a ChatEDT