17.5.07

Python: Como leer tags XML de forma fácil

Las posibilidades de Python con XML son muchas pero, generalmente queremos realizar operaciones sencillas como sería leer el contenido de una etiqueta en concreto. Esto, no está tan claro en la documentación (al menos para mi) y he aquí una pequeña receta de como conseguirlo con minidom:

#Importamos el módulo
from xml.dom import minidom

#Creamos una función que busca un tag dado en un fichero XML
#y nos devuelve una lista con todos los contenidos que había
#dentro de los tags.

def buscaXMLTag(xmlFile,xmlTag):
resultList = []
try:
dom = minidom.parse(xmlFile)
elements = dom.getElementsByTagName(xmlTag)
if len(elements) != 0:
for i in range(0,len(elements)):
resultList.extend([elements[i].childNodes[0].nodeValue])
else:
print 'xxx No hay elementos en el fichero XML con la etiqueta ' + xmlTag
except:
print 'xxx El fichero no existe o está mal formado.'
print 'xxx Path del fichero: ' + xmlFile
print 'xxx Etiqueta sobre la que se realizó la búsqueda: ' + xmlTag

return resultList

#Ejecutamos la función y sacamos por pantalla todo el contenido encontrado
datos = buscaXMLTag('/home/jose/test.xml','titulo')
for elemento in datos:
print elemento

8 comentarios:

Anónimo dijo...

hola. Pero primero que todo como hago para importar el archivo xml donde estan los datos

Jose Ramon Vilas dijo...

Como puedes ver, es una variable que se pasa por valor en el constructor del método

def buscaXMLTag(xmlFile,xmlTag)

donde xmlFile es lo que buscas.

JORGE A SANCHEZ dijo...

cuando copio tu codigo y lo trato de invocar me saca un error en la linea de comnado que dice lo siguiente SyntaxError: Non Ascii character '\xe1' en la dirección donde tengo el archivo .py, a que se debe este error? espero una pronta respuesta

Carlos Lima dijo...

Mete estas líneas al inicio del código:

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import os, sys

Francisco dijo...

Hola. Tenes algún mail por el que pueda contactarte? Saludos. Francisco.

Francisco dijo...

Hola. Tenes algún mail por el que pueda contactarte? Saludos. Francisco.

Jose Ramon Vilas dijo...

joservilas (at) gmail (dot) com

Jairnet dijo...

Muchas gracias este código me fue muy util para hacer búsqueda en en archivos XML.