lxml - 如何获得元素的最小 xpath?

lxml - how to get minimal xpath of element?

tree.xpath("/exact/path/to/element") 产生 [<Element I want>].

exact/path/to/element 通过调用 tree.getroottree().getpath(element).

获得

如果我找到元素的最小 xpath,例如Firebug、tree.xpath("//@minimal-descriptor") 产生 [<Element I want>]

问题

如何使用 lxml 或其他 Python 库从 element 获取 minimal xpath?

不可能让 lxml 生成任何 xpath 表达式,除了 the "absolute" one 最重要的是因为可能有大量的 xpath 表达式指向一个元素。

这里还提出了几个重点:


据我对 firebug documentation and the relevant "Split current option "Copy XPath" into two options for copying the absolute and relative XPath" issue 的了解,"Copy Minimal XPath" 功能仅适用于具有 id 属性集的元素:

Copy Minimal XPath - Node with ID - Copies the minimal version of an XPath to the current node to the clipboard