我需要编写一个动态函数,通过动态构建元素的 XPath,在 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() 需要命名空间。
虽然我知道我可以使用路径并在对 XPathEvaluator 的调用中提供命名空间,但我想知道是否可以使用所有命名空间使 getpath() 返回“完全限定”路径,因为这在某些情况下很方便案例。
(这是我之前的问题的一个衍生问题:没有命名空间的 Python XpathEvaluator)