Ich wollte Xpath jedes Elements in XML-Datei erhalten.Wie bekomme ich xpath aller Elemente in XML-Datei mit Standard-Namespace mit Python?
XML-Datei:
<root
xmlns="http://www.w3.org/TR/html4/"
xmlns:h="http://www.w3schools.com/furniture">
<table>
<tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</tr>
</table>
</root>
Python-Code: Da null Präfix in Standard-Namespace nicht erlaubt ist, habe ich mein eigenes Präfix dafür.
from lxml import etree
root=etree.parse(open("MyData.xml",'r'))
ns={'df': 'http://www.w3.org/TR/html4/', 'types': 'http://www.w3schools.com/furniture'}
for e in root.iter():
b=root.getpath(e)
print b
r=root.xpath(b,namespaces=ns)
#i need both b and r here
der XPath ist so (Ausgabe b)
/*
/*/*[1]
/*/*[1]/*[1]
/*/*[1]/*[1]/h:td
i nicht den XPath richtig für Elemente mit Standard-Namespace erhalten können, zeigt es als * für diejenigen Elemente Namen. Wie bekomme ich xpath richtig?
--die Code funktioniert gut, aber stattdessen xml aus Zeichenfolge zu lesen, mag ich es aus einer XML-Datei wie offen lesen ("MyData.xml", 'r') i kenne die genaue Syntax für root = etree.fromstring (x) .getroottree() nicht, um das Lesen von Dateien zu unterstützen. Wie geht das? – mariz
@mariz, um eine Datei mit dem Namen 'MyData.xml' zu parsen, können Sie' root = etree.fromstring (x) .getroottree() 'durch' root = etree.parse ('MyData.xml') ersetzen. Weitere Informationen unter: http://lxml.de/parsing.html –