我需要编写一个动态函数,在ATOM xml文档的子树上查找元素。
为此,我写了这样的话:
tree = etree.parse(xmlFileUrl)
e = etree.XPathEvaluator(tree, namespaces={'def':'http://www.w3.org/2005/Atom'})
entries = e('//def:entry')
for entry in entries:
mypath = tree.getpath(entry) + "/category"
category = e(mypath)
上面的代码无法找到类别。
原因是getpath返回没有名称空间的XPath,而XPathEvaluator e()需要名称空间。
有没有办法让路径中的getpath返回命名空间,或者允许XPathEvaluator接受路径而不指定命名空间(或者更确切地说,以其他方式指定它)?
答案 0 :(得分:2)
使用强>:
*[local-name() = 'category']
Or, if you want to be more precise
:
*[local-name() = 'category' and namespace-uri() = 'http://www.w3.org/2005/Atom']
或者只是:
def:category