Análisis XML en Python: Una guía completa

XML (Extensible Markup Language) es un lenguaje popular utilizado para almacenar y transferir datos. Python proporciona varias bibliotecas para analizar XML. En esta guía, te presentaremos dos bibliotecas integradas de Python para analizar XML: xml.dom.minidom y xml.etree.ElementTree.

Paso 1: Análisis de XML con xml.dom.minidom

La biblioteca xml.dom.minidom permite analizar documentos XML con Python. Para analizar una cadena XML, utilice el método parseString:

from xml.dom.minidom import parseString

xml_string = """
<library>
 <book>
   <title>The Great Gatsby</title>
   <author>F. Scott Fitzgerald</author>
   <year>1925</year>
 </book>
</library>
"""

document = parseString(xml_string)
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)

En el código anterior, analizamos la cadena XML y extraemos el título del libro.

Paso 2: Análisis de XML con xml.etree.ElementTree

La biblioteca xml.etree.ElementTree (ET) proporciona una forma más pitónica de analizar XML. Para analizar una cadena XML, utilice el método fromstring:

import xml.etree.ElementTree as ET

xml_string = """
<library>
 <book>
   <title>The Great Gatsby</title>
   <author>F. Scott Fitzgerald</author>
   <year>1925</year>
 </book>
</library>
"""

root = ET.fromstring(xml_string)
for child in root.iter():
   if child.text.strip():
       print(child.text)

En el código anterior, analizamos la cadena XML e imprimimos el texto de cada elemento.

Paso 3: Análisis de archivos XML

Tanto minidom como ElementTree pueden analizar XML desde archivos utilizando el método parse:

# Using minidom
from xml.dom.minidom import parse
document = parse("sample.xml")
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)

# Using ElementTree
import xml.etree.ElementTree as ET
root = ET.parse("sample.xml")
for child in root.iter():
   if child.text.strip():
       print(child.text)

El código anterior muestra cómo analizar un archivo XML e imprimir algunos elementos.

Paso 4: Guardar los datos XML en un archivo CSV

Después de analizar el XML, puede guardar los datos en un archivo CSV utilizando la biblioteca pandas:

import pandas as pd

parsed_dict = {
    "title": ["The Great Gatsby"],
    "author": ["F. Scott Fitzgerald"],
    "year": [1925]
}

df = pd.DataFrame(parsed_dict)
df.to_csv("parsed_xml_data.csv", index=False)

Paso 5: Tratamiento de XML no válido

La biblioteca Beautiful Soup puede analizar documentos XML que pueden contener errores:

from bs4 import BeautifulSoup

invalid_xml = """
<root>
 <person>
  <name>John Doe</name>
  <message>This is a message & an invalid XML example.</message>
 </person>
</root>
"""

soup = BeautifulSoup(invalid_xml, features="lxml-xml")
print(soup.prettify())

Beautiful Soup puede manejar XML inválido, pero es más lenta que otras bibliotecas de análisis XML.

Preguntas frecuentes

Utilice la biblioteca xmltodict. Es una biblioteca ligera que hace que XML se sienta como trabajar con JSON.

xml.dom.minidom es una implementación del Modelo de Objetos del Documento, mientras que xml.etree.ElementTree proporciona una API ligera y pitónica para analizar y crear XML.

Considere la posibilidad de utilizar el método iterparse de la biblioteca xml.etree.ElementTree. Es más eficiente en memoria porque itera a través del archivo XML en lugar de cargar todo el archivo en memoria.

Entre los errores más comunes se encuentran el XML mal formado y los errores de codificación. Puedes utilizar herramientas como un validador XML para asegurarte de que tu XML está bien formado, y especificar la codificación correcta al abrir tu archivo XML.

Tanto xml.dom.minidom como xml.etree.ElementTree soportan espacios de nombres. Consulta la documentación oficial de Python para ver ejemplos de cómo manejar espacios de nombres.

Comentarios (0)

Aún no hay comentarios aquí, ¡tú puedes ser el primero!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Elegir y comprar proxy

Proxies de centros de datos

Rotación de proxies

Proxies UDP

Con la confianza de más de 10.000 clientes en todo el mundo

Cliente apoderado
Cliente apoderado
Cliente proxy flowch.ai
Cliente apoderado
Cliente apoderado
Cliente apoderado