XML Tags mit bestimmten Attributen finden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

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>
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'
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

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?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

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.
Antworten