2009-08-21 26 views

Respuesta

7

http://docs.python.org/library/xml.etree.elementtree.html

etree soporta consultas XPath, al igual que lxml.

etree está incluido en la biblioteca estándar, pero lxml es más rápido.

+1

soporte para XPath está limitada en elementtree embargo, como se cita en la [Python 3 docs] (https://docs.python.org/3 /library/xml.etree.elementtree.html#xpath-support): "Este módulo proporciona soporte limitado para expresiones XPath para ubicar elementos en un árbol. El objetivo es admitir un pequeño subconjunto de la sintaxis abreviada, se usa un motor XPath completo. fuera del alcance del módulo ". –

2

Mi biblioteca de procesamiento XML favorita para Python es lxml que, debido a que es un contenedor de libxml2, también es compatible con XPath completo.

También hay 4Suite que es más una solución pura de Python.

1

ElementTree incluido. Bajo 2.6 y por debajo de su XPath es bastante débil, pero en 2.7 much improved:

import xml.etree.ElementTree as et 
root = et.parse(filename) 
result = '' 

# How to make decisions based on attributes even in 2.6 
for e in root.findall('.//child/grandchild'): 
    if e.attrib.get('name') == 'foo': 
     result = e.text 
     break 
Cuestiones relacionadas