我正在使用内置的Python ElementTree模块.访问子节点很简单,但父节点或兄弟节点呢? - 这可以在不遍历整棵树的情况下有效地完成吗?
我需要编写一个动态函数,通过动态构建元素的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)
Run Code Online (Sandbox Code Playgroud)
上面的代码无法找到“类别”,因为getpath()返回的XPath没有名称空间,而XPathEvaluator e()需要名称空间。
尽管我知道我可以使用该路径并在对XPathEvaluator的调用中提供一个名称空间,但我想知道是否有可能使使用所有名称空间的getpath()返回“完全限定”的路径,因为在某些情况下这很方便案件。
(这是我先前的问题的一个附带问题:不带名称空间的Python XpathEvaluator)