2009-09-03 23 views
11

Me gustaría analizar un archivo XML simple y pequeño utilizando python, pero el trabajo en pyXML parece haber cesado. Me gustaría utilizar Python 2.6 si es posible. ¿Alguien puede recomendar un analizador XML que funcione con 2.6?Análisis de XML en Python

Gracias

Respuesta

18

Si es pequeño y sencillo a continuación, sólo use the standard library:

from xml.dom.minidom import parse 
doc = parse("filename.xml") 

Esto devolverá un árbol DOM aplicación de la norma Document Object Model API

Si posteriormente necesita hacer cosas complejas como la validación del esquema o consultas XPath, entonces recomiendo el tercero lxml module, que es un envoltorio alrededor de la biblioteca libxml2 C popular.

+2

Gracias! Demasiado fácil. – Alex

3

¿Se ajustaría lxml a sus necesidades? Es la primera herramienta a la que recurro para analizar XML.

+3

Además, Python 2.5+ tiene etree integrado. Implementa lo que equivale a un subconjunto de lxml. Utilizo etree para el procesamiento XML simple y lxml cuando necesito algo que etree no cubre por completo. –

5

Here es también un muy buen ejemplo de cómo usar minidom junto con las explicaciones.

+0

El enlace parece redireccionar a la página principal sin www delante de él. Este es un enlace de trabajo: http://www.diveintopython.net/xml_processing/index.html – Husky

+0

Se corrigió el enlace. ¡Gracias! –

1

Hace algunos años, escribí una biblioteca para trabajar con estructurado XML. Hace XML más simple al hacer algunas suposiciones limitantes.

Puede usar XML para algo así como un documento de procesador de textos, en cuyo caso tiene una sopa complicada de cosas con etiquetas XML incrustadas en todo el lugar; en cuyo caso mi biblioteca no estaría bien.

Pero si utiliza XML para algo así como un archivo de configuración, mi biblioteca es bastante conveniente. Usted define las clases que describen la estructura del XML que desea, y una vez que tiene las clases hechas, hay un método para sorber en XML y analizarlo. El análisis real lo realiza xml.dom.minidom, pero luego mi biblioteca extrae los datos y los coloca en las clases.

La mejor parte: puede declarar un tipo de "Colección" que será una lista de Python con cero o más elementos XML dentro de ella. Esto es ideal para cosas como Atom o fuentes RSS (que fue la razón original por la que diseñé la biblioteca).

Aquí está la URL: http://home.avvanta.com/~steveha/xe.html

Estaría dispuesto a responder a las preguntas si tiene alguna.

6

Para la mayor parte de mis tareas me han utilizado la aplicación minidom Ligera DOM, desde la página oficial:

from xml.dom.minidom import parse, parseString 

dom1 = parse('c:\\temp\\mydata.xml') # parse an XML file by name 

datasource = open('c:\\temp\\mydata.xml') 
dom2 = parse(datasource) # parse an open file 

dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>')