lxml und xpath
Verfasst: Dienstag 20. Oktober 2009, 15:43
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
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
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()
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