请帮助制作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命名空间。