【发布时间】:2012-04-03 01:52:39
【问题描述】:
我有以下代码:
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())
虽然我认为“数据”函数应该检索 XML 属性的值,但事实并非如此。相反,它给了我一个错误:
xmlXPathCompOpEval: function data not found
Unregistered function
...
libxml2.xpathError: xmlXPathEval() failed
我做错了什么?
编辑:XPath 数据函数的文档可以在这里找到: http://www.w3.org/TR/xpath-functions/#func-data
【问题讨论】:
-
data()函数仅在 XPath 2.0 处理器中可用——它不是由 XPath 1.0 处理器实现的,例如 libxml。