Seite 1 von 1

lxml und xpath

Verfasst: Dienstag 20. Oktober 2009, 15:43
von marlob
Hallo,

ich habe folgende graphml-Datei
http://paste.pocoo.org/show/145977/

Daraus möchte ich alle Elemente <node> und <edge> auslesen.
Weiterhin benötige ich vom Element node
das Attribut id und den Text vom Unterelement NodeLabel
und vom Element edge
die Attribute target und source und den Text vom Unterelement EdgeLabel.
Das gelingt mir mit folgendem Code auch


Code: Alles auswählen

from lxml import etree

def main():
    tree = etree.parse("testsfc.graphml")
    for node in tree.xpath(".//*[local-name()='node']"):
        print "node", node.get('id'), node.xpath("string()").strip()

    for edge in tree.xpath(".//*[local-name()='edge']"):
        print "edge", edge.get('source'), edge.get('target'), \
              edge.xpath("string()").strip()

if __name__ == '__main__':
    main()
Nur gefällt mir hier der Teil
node.xpath("string()").strip()
aus der print-Anweisung nicht, da ich mir ja sicher sein will,
das der Text immer vom Element NodeLabel kommen soll.

Wie kann ich das besser lösen? Vielleicht kann mir ja jemand helfen?

gruss
marlob

Verfasst: Dienstag 20. Oktober 2009, 15:44
von marlob
Sorry,
aber irgendwas habe ich an den Code-Tags falsch gemacht :oops:

Verfasst: Dienstag 20. Oktober 2009, 16:03
von Hyperion
marlob hat geschrieben:Sorry,
aber irgendwas habe ich an den Code-Tags falsch gemacht :oops:
Dann nutze die "edit"-Funktion des Boards und repariere das einfach ;-)

Verfasst: Dienstag 20. Oktober 2009, 18:46
von Leonidas
Wenn man BBCode deaktiviert, funktionieren die Tags logischerweise nicht.

Verfasst: Dienstag 20. Oktober 2009, 19:36
von marlob
Danke für die Hinweise :-) Hatte es wohl etwas zu eilig ;-)