Si nos enfrentamos por primera vez a los archivos XML, trabajar con ellos puede parecer complicado. Tranquilo, no te preocupes, todos pasamos por ese momento y por eso hoy te traigo una herramienta que simplifca mucho este proceso. Se trata del módulo de import xml.dom.minidom, una implementación ligera del modelo DOM. Este módulo es muy adecuado para tareas de manipulación XML y en este artículo te quiero contar cómo puedes utilizarlo.
¿Qué es import xml.dom.minidom y cómo funciona?
El módulo de import xml.dom.minidom en Python implementa una versión minimalista del Modelo de Objetos del Documento, también denominado DOM, por sus siglas en inglés. Este es un módelo que permite interactuar con documentos XML como si fueran árboles en donde cada nodo representa un elemento o atributo. Si requieres realizar operaciones básicas, como son leer, modificar o escribir XML, este es un módulo muy adecuado y eficiente para ti.
Si bien el import xml.dom.minidom es ligero, no es una opción muy viable para procesar datos XML no confiables, ya que existen algunos problemas de seguridad.
¿Cómo funciona import xml.dom.minidom?
Un archivo XML es similar a un libro con capítulos y secciones. El módulo de import xml.dom.minidom nos brinda las herramientas para hojear el libro, encontrar secciones específicas, editarlas e inclusive escribir un nuevo capítulo. Todas estas cosas son posibles solamente gracias a las funciones que ofrece el módulo.
Si quieres usarlo, solo necesitas importar el módulo con:
from xml.dom.minidom import parse, parseString
Funciones en import xml.dom.minidom
🔴 ¿Quieres Aprender a Programar con Python? 🔴
Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semanaAlgunas de las funciones que puedes usar con import xml.dom.minidom son:
- parse: Carga un archivo XML.
- parseString: Convierte una cadena XML en un árbol DOM.
- createDocument: Crea un nuevo documento XML desde cero.
- toprettyxml: Genera una salida bien formateada del XML.
- writexml: Escribe el árbol DOM en un archivo.
Ejemplo: Generar un XML y formatearlo
Veamos un ejemplo completo que muestra cómo crear un documento XML con varios elementos y formatearlo para su lectura.
from xml.dom.minidom import getDOMImplementation
# Crear el documento
impl = getDOMImplementation()
doc = impl.createDocument(None, "catalogo", None)
# Añadir elementos
root = doc.documentElement
producto = doc.createElement("producto")
producto.setAttribute("id", "001")
root.appendChild(producto)
nombre = doc.createElement("nombre")
nombre.appendChild(doc.createTextNode("Teclado mecánico"))
producto.appendChild(nombre)
precio = doc.createElement("precio")
precio.appendChild(doc.createTextNode("50"))
producto.appendChild(precio)
# Formatear y guardar
with open("catalogo.xml", "w") as archivo:
archivo.write(doc.toprettyxml(indent=" "))
Este ejemplo genera un archivo XML bien estructurado que contiene información de un producto..
Operaciones básicas con xml.dom.minidom
- Leer un archivo XML: La función parse permite cargar un archivo XML y convertirlo en un árbol DOM. Ya una vez cargado, puedes explorar su contenido utilizando sus métodos, así por ejemplo:
from xml.dom.minidom import parse
# Cargar un archivo XML
dom = parse('archivo.xml')
# Obtener el elemento raíz
root = dom.documentElement
print("Etiqueta raíz:", root.tagName)
- Crear un XML desde cero: Si necesitas generar un archivo XML, puedes usar el método createDocument y otros métodos para construir el árbol:
from xml.dom.minidom import getDOMImplementation
# Crear un documento nuevo
impl = getDOMImplementation()
doc = impl.createDocument(None, "biblioteca", None)
# Añadir nodos
root = doc.documentElement
libro = doc.createElement("libro")
root.appendChild(libro)
titulo = doc.createElement("titulo")
titulo.appendChild(doc.createTextNode("Python para principiantes"))
libro.appendChild(titulo)
# Guardar en archivo
with open("biblioteca.xml", "w") as archivo:
archivo.write(doc.toprettyxml(indent=" "))
- Modificar un archivo XML existente: Puedes acceder y modificar elementos del archivo cargado. Por ejemplo, cambiar un valor o añadir un nuevo atributo:
for libro in root.getElementsByTagName("libro"):
titulo = libro.getElementsByTagName("titulo")[0]
print("Título actual:", titulo.firstChild.nodeValue)
titulo.firstChild.nodeValue = "Python avanzado"
- Escribir un XML a archivo: Una vez realizados los cambios, puedes guardar el árbol en un archivo utilizando el método writexml:
with open("archivo_modificado.xml", "w") as archivo:
dom.writexml(archivo, indent="", addindent=" ", newl="\n")
Ventajas, desventajas y algunos consejos para usar import xml.dom.minidom
Ventajas | Limitaciones |
---|---|
Fácil de usar para tareas básicas. | No adecuado para procesar XML grandes. |
API DOM estándar, familiar para desarrolladores. | No es seguro para XML no confiables. |
Permite crear y manipular documentos con pocas líneas. | Carece de funciones avanzadas como las de xml.etree.ElementTree. |
Consejos a seguir
- Validación del XML: Asegúrate de que el archivo XML esté bien formado antes de procesarlo.
- Liberar memoria: Usa el método unlink para liberar memoria cuando ya no necesites el árbol DOM.
- Considerar alternativas: Para documentos grandes o tareas más complejas, considera usar xml.etree.ElementTree o lxml.
Si te interesa el campo de la programación y quieres seguir aprendiendo sobre temáticas similares a esta, no dudes en incribírte en nuestro bootcamp de programación para principiantes, en el que descubrirás todos los pequeños secretos d ela programación y cómo está cambiando el mundo. Aprende de los mejores a programar increible saplicaciones para que puedas incursionar fácilmente en el mercado laboral. ¡Empieza hoy y cambia tu futuro para siempre!