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

XML Tags mit bestimmten Attributen finden

Beitragvon psyalex » 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

Beitragvon 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

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

Beitragvon Hyperion » Freitag 3. Oktober 2008, 21:10

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

Beitragvon psyalex » 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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder