ich den folgenden Code haben:Python 2.7 libxml2, XPath, extrahieren XML-Attribute
import libxml2
import sys
def xpath_grep(query, file):
doc = libxml2.parseDoc(file)
for matched_region in doc.xpathEval(query):
matched_region.saveTo(sys.stdout, format = True) # add match to stdout
if __name__ == '__main__':
if len(sys.argv) <= 1:
# default arguments
query = "data(bn/variable/@name)"
files = ["burglary_bn.xml"]
else:
query = sys.argv[1]
files = sys.argv[2:]
for xml_file in files:
xpath_grep(query, file(xml_file).read())
Während ich die "Daten" glauben Funktion sollte den Wert des XML-Attribut abzurufen, ist es nicht. Stattdessen gibt es mir einen Fehler:
xmlXPathCompOpEval: function data not found
Unregistered function
...
libxml2.xpathError: xmlXPathEval() failed
Was mache ich falsch?
EDIT: Dokumentation für die XPath-Datenfunktion finden Sie hier: http://www.w3.org/TR/xpath-functions/#func-data
Die Funktion 'data()' ist nur in XPath 2.0-Prozessoren verfügbar - sie wird nicht von XPath 1.0-Prozessoren wie libxml implementiert. –