5

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

我正在尝试为 a 中的元素生成 xpath lxml.etree._ElementTreeElementTree通过解析来自某些生产 WebService 的 600Kb 响应生成。

print elem.getroottree().getpath(elem)

这是我得到的结果:

'/S:Envelope/S:Body/ns5:getPhysicalResponse/*[18]/*[12]/*[6]/*[2]'

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

更新 查看lxml 源代码- 它指向库中的tree.h xmlGetNodePath方法libxml2。所以这实际上是libxml2行为。

更新 做更多测试我发现每次标签具有非默认命名空间时都会发生这种情况。

4

1 回答 1

1

根据需要使用getelementpath()和后处理命名空间。

于 2016-12-16T07:50:00.533 回答