En este ejemplo detallado de crear un fichero XML con Python, vamos a explorar de forma exhaustiva cómo podemos generar y crear un fichero en formato XML, un lenguaje de marcado de uso extendido en la web, utilizando el poderoso y versátil lenguaje de programación Python. Lo haremos a partir de una lista preestablecida de elementos que se nos han proporcionado previamente. Esta lista de elementos será la base sobre la cual construiremos nuestro fichero XML.
Lo primero será definir una lista de elementos. En este caso vamos a crear una lista de nombres mediante una lista.
lista_nombres = ['Victor','Ignacio','Elena']
La idea es que a partir de esta lista podamos generar un fichero XML con la siguientes estructura:
<nombre> <nombre>Víctor</nombre> <nombre>Ignacio</nombre> <nombre>Elena</nombre> </nombres>
Para el proceso de creación del fichero XML mediante Python vamos a utilizar el módulo xml.etree.ElementTree
, más conocido como ET
. Este módulo dentro de Python permite gestionar de forma sencilla el contenido XML.
Así que lo primero que haremos será importar dicho módulo de la siguiente forma:
import xml.etree.ElementTree as ET
Lo siguiente será definir cual será el elemento root o base de nuestro fichero XML. Atendiendo a la estructura que hemos definido anteriormente vemos que el elemento root es el elemento nombre
. Por lo que crearemos dicha raíz mediante la clase Element
. El valor del parámetro de instanciación de la clase será el nombre del elemento que queremos crear.
eNombres = ET.Element("nombres")
Una vez que tenemos el elemento base deberemos de ir creado los subelementos e irlos añadiendo al elemento raíz. Para poder crear los subelementos contamos con la función SubElement
. La cual recibe, al igual que pasaba con la clase Element
, el nombre que queremos dar al elemento. Pero además recibe una referencia al elemento sobre el cual queremos crearlo, es decir, el recién creado elemento raíz.
eNombre = ET.SubElement(eNombres,"nombre")
Ahora que tenemos creada la estructura tendremos que añadir el contenido sobre el subelemento, es decir, el valor del nombre. En este caso utilizamos el atributo .text
de la clase para poderle asignar el valor.
eNombre.text = "Víctor"
Pero como lo que queremos es ir incluyendo todos los elementos de la lista, lo que haremos será recorrerla e ir creando subelemento a subelemento mediante la función SubElement
.
eNombres = ET.Element("nombres") for nombre in lista_nombres: eNombre = ET.SubElement(eNombres,"nombre") eNombre.text = nombre
El siguiente paso será definir que el elemento nombre es el raíz. Esto lo conseguimos hacer mediante la clase ElementTree
. A la cuál pasaremos el elemento que es la raíz.
tree = ET.ElementTree(eNombres)
El último paso será el crear el fichero XML con el contenido de la estructura que acabamos de crear. Para ello recurrimos al método .write()
que nos ofrece la clase ElementTree
de la raíz del XML.
tree.write("new_data.xml",encoding='utf-8',xml_declaration=True)
Vemos, que en este caso, se incorpora información relativa a si se debe añadir la declaración de fichero XML o del encoding a utilizar. En este caso el encoding uft-8
.
Con esto ya habremos conseguido crear un fichero XML con Python a partir de una lista de elementos dados.