Hallo,
ich vermisse gerade in ElementTree wieder einmal etwas ent-
fernt Ähnliches zu XPath (aber Einfacheres), auch weil man
bei den beiden Methoden node.find(), node.findall() und
node.findtext() zwingend den XML-Namensraum angeben muss,
sofern im Wurzelelement deklariert.
Nun habe ich etwas Code, der mir mit einem pfadartigen Aus-
druck einen Ergebnis-String liefert, also einen Attribut-
wert oder den Textinhalt eines Knotens. Meine Ausdrücke
sehen wie folgt aus (hier für einen SVG-Wurzelknoten als
Beispiel), mit Alternativen in ET 1.2 und 1.3 (letzteres
nicht getestet):
@viewBox
.get("viewBox") [ET >= 1.2]
title#
.findtext("{...}title") [ET >= 1.2]
g/rect@fill
.find("{...}g/{...}rect").get("fill") [ET == 1.2]
.find("{...}g/{...}rect[@fill]") [ET == 1.3]
g/rect[2]@fill
.findall("{...}g/{...}rect")[2].get("fill") [ET == 1.2]
.find("{...}g/{...}rect[2][@fill]") [ET == 1.3]
Nun finde ich nicht nur meine Notation kürzer, ich möchte
auch keine weitere Abhängigkeiten von ET 1.3 zu meinem Code
hinzufügen (von dem anscheinend noch gar kein Release vor-
liegt). Und auch dann müsste ich noch die Namensräume spe-
ziell behandeln.
Daher folgende Fragen: Gibt es außer XPath irgendeinen an-
deren (pythonischeren) Standard? Hat jemand hier etwas Ähn-
liches implementiert?
Gruß,
Dinu