Artículos
Python

Borrar elementos XML con Python

18/Feb/2024

En este ejemplo vamos a ver como utilizar el módulo xml.etree.ElementTree para poder borrar elementos XML con Python de un fichero con el contenido.

De esta manera, lo primero que haremos será el cargar el documento XML para poder operarlo en memoria. Para ello utilizamos la función .parse() que nos ofrece el módulo xml.etree.ElementTree.

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

Una vez que hemos cargado el documento XML, lo siguiente que vamos a hacer es obtener acceso al elemento raíz del fichero XML. Pero, ¿cómo es nuestro fichero XML? Pues el fichero XML que estamos cargando tiene la siguiente estructura:

<?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 observar es una lista de elementos que están definidos dentro de un elemento nombres, que en este caso es el elemento raíz. Por lo que el acceso al elemento raíz nos dará un acceso a dicho elemento nombres. La función .getRoot() de la clase ElementTree es quien nos permite hacer esto.

root = tree.getroot()

Para demostrar el ejemplo de borrar elementos XML con Python lo que vamos a hacer es borrar todos aquellos nombres que acaben en “s”. Por lo que necesitaremos recorrer todos los elementos del árbol XML. Esto lo llevamos a cabo utilizando un bucle for:

for elemento in root:
  # Operaciones sobre el elemento del árbol

Por cada elemento vamos a ver si este termina en “s”, para ello lo que hacemos es buscar su última posición mediante técnicas de slicing de Python, es decir, recortando la cadena. En este caso, la última posición en el slicing es la que se representa mediante el valor -1.

Pero, ¿cómo obtengo el texto del elemento? En este caso será el atributo .text del elemento dónde encontremos esto. El código se habrá evolucionado de la siguiente forma:

for elemento in root:
  if (elemento.text[-1] == "s"):
    # Borrar el elemento

Ahora pasaremos a eliminar el elemento del árbol XML. Esto lo llevamos a cabo utilizando el método .remove() de la clase Element. El método .remove() lo invocamos directamente sobre el elemento.

for elemento in root:
    if (elemento.text[-1] == "s"):
        root.remove(elemento)

Ya solo nos quedará volcar el contenido del árbol XML directamente sobre un nuevo fichero. Para ello tenemos el método .write() sobre el árbol que es una clase ElementTree.

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

Es importante indicar el encoding del fichero y si queremos incluir la declaración de definición de fichero XML. Con esto ya tendremos todo el código necesario para poder borrar elementos XML con Python.

Código Fuente

Descárgate el código fuente de Borrar elementos XML con Python
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star
Borrar elementos XML con Python
Suscribir
Notificar de
guest
0 Comentarios
Opiniones integradas
Ver todos los comentarios