请帮助制作getpath()以在getpath() xpath中返回完整的标签名称或查找解决方法

我正在尝试生成lxml.etree._ElementTree中的元素的xpath。 ElementTree是通过分析来自某些生产WebService的600Kb响应生成的。

print elem.getroottree().getpath(elem)

这是我得到的结果:
'/S:Envelope/S:Body/ns5:getPhysicalResponse/*[18]/*[12]/*[6]/*[2]'

不幸的是,我无法发布原始xml-它包含专有的客户信息。
我也尝试使用自动生成的简单元素树(具有100个嵌套级别,每个级别有100个子级,但没有运气)来重现此结果-getpath()返回带有完整标签名的xpath。

更新
研究lxml source code-它指向tree.h库中的xmlGetNodePath libxml2方法。因此,这实际上是libxml2行为。

更新
做更多的测试,我发现每次当标签具有非默认 namespace 时,都会发生这种情况。

最佳答案

根据需要使用getelementpath()和postprocess命名空间。

10-06 11:11