2009-08-21 5 views

Odpowiedz

7

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

etree obsługuje zapytań XPath, podobnie jak lxml.

Etree jest zawarty w standardowej bibliotece, ale lxml jest szybszy.

+1

Wsparcie Xpath jest ograniczony ElementTree jednak, cytowany w [3 Python Dokumenty] (https://docs.python.org/3 /library/xml.etree.elementtree.html#xpath-support): "Ten moduł zapewnia ograniczoną obsługę wyrażeń XPath do lokalizowania elementów w drzewie. Celem jest obsługa małego podzestawu skróconej składni, pełny silnik XPath jest poza zakresem modułu. " –

2

Moja ulubiona biblioteka przetwarzania XML dla Pythona to lxml, która, ponieważ jest opakowaniem wokół biblioteki libxml2, obsługuje również pełne XPath.

Istnieje również 4Suite, który jest bardziej czystym rozwiązaniem Python.

1

ElementTree jest wliczony w cenę. Pod 2,6 i poniżej Xpath dość słabe, ale w 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