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.
Comentarios (0)
Aún no hay comentarios aquí, ¡tú puedes ser el primero!