Artículos
Python

Actualizar un fichero XML con Python

03/Feb/2024

Ya hemos visto cómo crear un fichero XML con Python y el módulo xml.etree.ElementTree, ahora vamos a ver cómo podemos actualizar un fichero XML con Python utilizando la misma librería. La idea del ejemplo será cargar un fichero XML que contiene una lista de nombres con el siguiente formato:

<?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>

Y lo que haremos será buscar un nombre y cambiarlo por otro. En este caso cambiaremos el nombre “Curro” por el nombre “Francisco”. Así que manos a la obra.

Lo primero será cargar el módulo xml.etree.ElementTree:

import xml.etree.ElementTree as ET

Una vez que tenemos el módulo importado pasaremos a cargar el fichero XML. Esto lo conseguimos mediante el método .parse(), el cual recibe el fichero como parámetro.

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

Una vez cargado el fichero XML obtenemos una referencia al elemento raíz del documento utilizando el método .getroot()

root = tree.getroot()

Ahora pasaremos a recuperar todos los elementos de tipo nombre para poder buscar el que nos interesa. En este caso el método .findAll() nos devuelve todos los elementos que cumplan una determinada condición.

root.findall('nombre'):

Así que utilizamos el método .findAll() para recorrerlo en un bucle for para poder ir pasando por cada uno de los elementos. En este caso, cuando encontremos el elemento que tenga el nombre de “Curro” es cuándo pasaremos a actualizarlo.

Cabe recordar que el atributo .text del objeto Element es el que nos devuelve el contenido de los elementos. Será utilizando este mismo atributo .text como podremos actualizar por el nuevo valor.

for nombre in root.findall('nombre'):
  if (nombre.text == "Curro"):
    nombre.text = "Francisco"
    nombre.set("updated","true")

Además hemos aprovechado en el código para insertar un atributo en el elemento nombre modificado con el valor de updated y un valor de true. Para saber que dicho elemento se ha actualizado. Nos hemos apoyado en el método .set().

Solo nos quedará generar un nuevo fichero con el valor resultado de la ejecución. En este caso el método .write() nos ha ayudado para generar dicho fichero:

tree.write("data2.xml",encoding='utf-8',xml_declaration=True)

De esta forma ya habremos conseguido actualizar un fichero XML con Python.

Código Fuente

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