Seite 1 von 1

XML Tags mit bestimmten Attributen finden

Verfasst: Freitag 3. Oktober 2008, 20:37
von psyalex
Hallo,

kann mir jemand erklären warum ich mit diesem Python-Code keinen XML Baum nach Attributen durchsuchen kann ein Tag aber ohne Probleme finde (Python2.6)? Die Python Dokumentation ist an der Stelle sehr mager und was ich andernorts gelesen habe sollte das funktionieren.

Code: Alles auswählen

import xml.etree.ElementTree
...
root.find("user[@id=’hallo@jabber.org’]")
das funktioniert auch nicht

Code: Alles auswählen

root.find("user[@id]")
Die Fehlermeldung ist in beiden Fällen "expected path seperator ([)"

das folgende funktioniert aber

Code: Alles auswählen

root.find("user")
das steckt in root

Code: Alles auswählen

<users>
    <user id="hallo@jabber.org" />
</users>

Verfasst: Freitag 3. Oktober 2008, 20:50
von BlackJack
`ElementTree` unterstützt nur eine ganz kleine Untermenge von XPath. Ausserdem verwendet Dein erstes Beispiel falsche Anführungszeichen:

Code: Alles auswählen

In [177]: unicodedata.name(u'\u2019')
Out[177]: 'RIGHT SINGLE QUOTATION MARK'

Verfasst: Freitag 3. Oktober 2008, 21:05
von psyalex
Kann ich die Funktionen von X-Path irgendwie an den tree binden den ich mit ElementTree erstellt habe? Oder gibt es eine andere Möglichkeit mit ElementTree Elemente mit einem bestimmten Attribut auszuwählen?

Verfasst: Freitag 3. Oktober 2008, 21:10
von Hyperion

Verfasst: Samstag 4. Oktober 2008, 15:19
von psyalex
Danke! Mit lxml funktioniert es. Ich dachte nur mit etree wäre so was auch möglich, was aber nicht der Fall zu sein scheint.