Guía de XML en Python: de la biblioteca estándar a lxml

1. Introducción

Python es un lenguaje de programación flexible que permite manejar fácilmente diversos formatos de datos. Entre ellos, XML(Extensible Markup Language) se utiliza con frecuencia para el intercambio y el almacenamiento de datos estructurados, y se emplea ampliamente en respuestas de API y archivos de configuración. En Python, se puede manipular XML fácilmente utilizando la biblioteca estándar y bibliotecas externas. En este artículo, explicamos de manera clara desde las operaciones básicas hasta las aplicaciones avanzadas de XML con Python.

2. Introducción a las bibliotecas para trabajar con XML en Python

2.1 Biblioteca estándar: xml.etree.ElementTree

La biblioteca estándar de Python xml.etree.ElementTree es una herramienta práctica que facilita la lectura y escritura de archivos XML, así como la exploración y edición de estructuras en árbol。
  • Fundamentos del parseo: import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() print(root.tag) # Salida: "data" En este código se lee el archivo XML llamado data.xml y se muestra la etiqueta del elemento raíz. Puedes comprobar que el resultado de salida es «data».
  • Manejo de errores cuando el archivo no existe: Si el archivo no existe, se lanzará FileNotFoundError, por lo que puedes añadir un manejo de excepciones como se muestra a continuación. try: tree = ET.parse('data.xml') root = tree.getroot() except FileNotFoundError: print("No se encontró el archivo.")

2.2 Biblioteca externa: lxml

Cuando se necesitan operaciones avanzadas con XML, se recomienda la biblioteca lxml. lxml admite un potente procesamiento de XML con XPath y XSLT, y permite realizar fácilmente operaciones que resultan difíciles con la biblioteca estándar。
  • Obtención de elementos mediante XPath: from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country[@name="Liechtenstein"]') print(countries[0].tag) # Salida: "country" Este código obtiene el elemento country cuyo atributo name es «Liechtenstein».
年収訴求

3. Análisis y manipulación de XML

3.1 Procedimiento básico de análisis

Para analizar un archivo XML y manipular la estructura en árbol, use parse() de xml.etree.ElementTree. Este método carga el archivo XML y obtiene el elemento raíz del árbol.
  • Análisis desde un archivo: import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot() print(root.tag) # Salida: "rootTag" Este código carga el archivo XML example.xml y muestra el nombre de la etiqueta del elemento raíz.

3.2 Búsqueda de elementos y manipulación de atributos

Para buscar elementos XML, use find() y findall(). Esto permite obtener fácilmente elementos o atributos específicos。
  • Búsqueda de elementos y obtención de atributos: country = root.find('country') print(country.get('name')) # Salida: "Liechtenstein"
  • Manipulación de atributos: Para manipular los atributos de un elemento XML, obténgalos con get() y configúrelos con set(). country.set('currency', 'CHF') print(country.attrib) # Salida: {'name': 'Liechtenstein', 'currency': 'CHF'}

4. Edición y guardado de XML

4.1 Cómo editar elementos

Puedes editar el contenido del XML modificando el texto y los atributos de los elementos XML. Por ejemplo, para cambiar el texto de un elemento, procede así:
  • Edición del texto de un elemento: rank = root.find('.//rank') rank.text = '2' print(rank.text) # Salida: "2"

4.2 Exportar a un archivo XML

Para guardar el XML modificado en un archivo, usa el método write().
  • Guardar el XML: tree.write('updated_data.xml')
侍エンジニア塾

5. Procesamiento avanzado con bibliotecas externas

5.1 Operaciones avanzadas de XML con lxml

Al utilizar la biblioteca lxml, es posible realizar búsquedas complejas con XPath y convertir XML a otros formatos mediante XSLT.
  • Búsqueda de elementos con XPath: from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country') for country in countries: print(country.get('name'))

5.2 Transformación de XML con XSLT

Se muestra un ejemplo de cómo convertir XML a HTML usando XSLT.
  • Conversión de XML a HTML: from lxml import etree xml_tree = etree.parse('data.xml') xsl_tree = etree.parse('style.xsl') transform = etree.XSLT(xsl_tree) result_tree = transform(xml_tree) result_tree.write('output.html', pretty_print=True)

6. Práctica: código de ejemplo y explicación

6.1 Ejemplo para extraer datos de XML

Este es un código de ejemplo que extrae datos de un archivo XML y muestra información específica。
  • Código de ejemplo: import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() for country in root.findall('country'): name = country.get('name') rank = country.find('rank').text print(f"Country: {name}, Rank: {rank}")

6.2 Ejemplo para editar y guardar XML

Este es un código de ejemplo que edita el valor de un elemento XML y guarda los cambios。
  • Código de ejemplo: import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() rank = root.find('.//rank') rank.text = '2' tree.write('updated_data.xml')

7. Conclusión

Al trabajar con XML en Python, puedes realizar fácilmente operaciones básicas de XML utilizando la biblioteca estándar xml.etree.ElementTree. Además, el uso de lxml permite operaciones avanzadas como XPath y XSLT. Toma como referencia el código presentado en el artículo y prueba a manipular XML en la práctica.