Artículos
Python

Leer XML con Python

09/Oct/2023

Si hay una cosa por la que me encanta Python es por la sencillez que ofrece para hacer ciertas tareas. En el ejemplo de hoy vamos a ver cómo podemos leer XML con Python. Para ello contaremos con un fichero que tiene un contenido en XML. Este fichero se llamará data.xml

<?xml version="1.0"?>
<nombres>
    <nombre>Luis</nombre>
    <nombre>Curro</nombre>
    <nombre>Javier</nombre>
    <nombre>Marta</nombre>
    <nombre>Virginia</nombre>
    <nombre>José</nombre>
    <nombre>Sonsoles</nombre>
    <nombre>Isabel</nombre>
    <nombre>Quino</nombre>
</nombres>

Como podemos ver la estructura es muy sencilla. Ya que contamos con una lista de nombres montada mediante un par de elementos nombres y nombre.

Lo primero que tendremos que hacer es nuestro código para poder leer XML con Python es utilizar el módulo xml.etree.ElementTree. El módulo xml.etree.ElementTree nos proporciona un API sencillo para poder parsear y crear información en XML.

Así que importaremos la clase ElementTree de este módulo de la siguiente forma:

import xml.etree.ElementTree as ET

El método principal que tiene esta clase es el método .parse(). Dicho método lo que hace es parsear el fichero XML o la cadena XML que le pasemos como parámetro y crear un árbol con los nodos que conforman el contenido XML. Así que le pasamos nuestro nombre de fichero como parámetro.

xml = ET.parse("data.xml")

Una vez que tenemos nuestro fichero parseado lo que podemos es obtener la raíz del fichero XML. Es decir el elemento principal que agrupa a todos mediante el método .getroot()

root = ET.parse("data.xml").getroot()

Ahora que tenemos acceso al elemento principal podremos realizar búsquedas de elementos o de atributos XML por todo el árbol de nodos. En nuestro caso vamos a recuperar todos los elementos de tipo nombre que haya dentro del árbol. Para poder realizar esto llamamos al método .findall() al cual le pasamos el nombre del elemento.

for nombre in root.findall('nombre'):
    print (nombre.text)

Lo que nos retorna el método .findall() es una lista de elementos que cumplen dicha condición. Por lo que podremos recorrerla iterando por ella. Cada elemento de la lista corresponde a un nodo. Es por ello que si queremos acceder al contenido de texto del nodo deberemos de apoyarnos en el atributo .text de dicho elemento.

Así habremos conseguido leer XML con Python para poder acceder al contenido de nuestro fichero de una forma sencilla.

Código Fuente

Descárgate el código fuente de Leer XML con Python
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star
Leer XML con Python