Artículos
Python

Insertar Elementos XML con Python

07/Feb/2024

Ya hemos visto cómo podemos crear un fichero en XML con una estructura. Así que ahora vamos a ver cómo podemos insertar elementos XML con Python en un fichero ya existente.

Como ya hemos hecho vamos a utilizar el módulo xml.etree.ElementTree que nos permite gestionar los elementos XML como si fuesen objetos con Python. Por lo tanto lo primero que haremos será el importar dicho módulo.

import xml.etree.ElementTree as ET

El módulo xml.etree.ElementTree nos va a permitir mediante la funcionar .parse() el cargar un fichero XML que ya exista y en el que vamos a insertar los nuevos elementos. Por lo que cargaremos el fichero de la siguiente forma:

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

El siguiente paso será el obtener una referencia al elemento raíz del fichero, ya que será dicho elemento a partir del cual realizaremos las operaciones necesarias. Es la función .getroot() de la clase ElementTree la que nos permitirá llevar a cabo dicha tarea.

root = tree.getroot()

El fichero en cuestión que hemos manejado tiene la siguiente estructura para albergar una lista de nombres:

<?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 vamos a realizar es insertar más nombres en la lista. Para ello, los nuevos nombres, los vamos a almacenar en una lista de Python.

lista_nombres = ['Victor','Ignacio','Elena']

Recorreremos la lista de los nuevos nombres para poder ir creando elementos de tipo nombre que vamos a insertar en la lista. Para ello nos apoyamos en la clase Element que es la que nos permite crear un nuevo elemento y en el atributo .text que es el que nos ayuda a crear el contenido del elemento.

El código sería el siguiente:

for nombre in lista_nombres:
    nombreElemento = ET.Element("nombre")
    nombreElemento.text = nombre

Una vez que disponemos del elemento tenemos que pasar a insertarlo dentro del árbol. Así que sobre la raíz utilizamos el método .insert() pasándole la posición en la que queremos insertar el elemento y el elemento en cuestión.

Podemos indicar las posiciones contando desde el inicio mediante números positivos o desde el final mediante números negativos. Por ejemplo, para insertarlo en la penúltima posición añadiremos la siguiente línea de código en el bucle:

for nombre in lista_nombres:
    nombreElemento = ET.Element("nombre")
    nombreElemento.text = nombre
    root.insert(-1,nombreElemento)

Una vez modificado nuestro fichero XML e insertados los elementos pasaremos a generar un nuevo fichero con el contenido. Esto es posible al método .write() del ElementTree.

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

Este método recibe como parámetros el nuevo nombre del fichero, el tipo del encoding y si queremos añadir la declaración de cabecera del fichero XML.

Con esto ya tendremos realizado el proceso que nos permite insertar elementos XML con Python en un fichero ya existente.

Código Fuente

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