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

Freitag 3. Oktober 2008, 20:37

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

Freitag 3. Oktober 2008, 20:50

`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

Freitag 3. Oktober 2008, 21:05

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: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 3. Oktober 2008, 21:10

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

Samstag 4. Oktober 2008, 15:19

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