【发布时间】:2010-11-29 18:35:39
【问题描述】:
我正在尝试学习如何使用这个示例 XML 文件从 Python 执行 XPath 查询:http://pastie.org/1333021 我刚刚添加了一个命名空间,因为我的实际应用程序使用它。
基本上,我想执行一个返回节点子集的顶级查询,然后查询子集(比本示例的规模大得多)
所以这是我的代码,首先找到所有<food> 节点,然后遍历每个节点的描述。
#!/usr/bin/python2
import libxml2
doc = libxml2.parseFile("simple.xml")
context = doc.xpathNewContext()
context.xpathRegisterNs("db", "http://examplenamespace.com")
res = context.xpathEval("//db:food")
for node in res:
# Query xmlNode here
print "Got Food Node:"
desc = node.xpathEval('db:description') # this is wrong?
print desc
所以这本质上是一个命名空间问题,如果我从 XML 文件中删除 xlns 属性并仅使用基本的 XPATH 查询而不使用 db: 它工作正常。顶部查询 //db:food 工作正常,但第二个查询失败。
请有人更正我的命名空间/查询语法。
非常感谢
【问题讨论】: