如何为 HTML DOM 元素创建 XPATH?

Posted

技术标签:

【中文标题】如何为 HTML DOM 元素创建 XPATH?【英文标题】:how to create XPATH for a HTML DOM element? 【发布时间】:2010-11-22 22:07:21 【问题描述】:

例如,“/html/BODY/DIV[1]/TABLE[1]/TR[2]/TD[1]/INPUT”。

给定一个 DOM 元素,如何获取这个 XPATH 字符串? 有什么想法吗?

谢谢,

达特巴约。

【问题讨论】:

【参考方案1】:

我记得,firefox 的 xpath checker 扩展为您提供了一个点击式界面,用于获取 HTML 文档中 DOM 元素的 xpath。

【讨论】:

【参考方案2】:

经过一番努力,我找到了办法。

与 DOM 路径一起使用每个节点的 SourceIndex。比如“/Html:1/Body:2/Div:5/Input:6”

但同样, 1.这可能不适用于动态页面(ajax修改内容)。 2. 这可能不是唯一的跨浏览器,因为 sourceIndex 可能会根据浏览器渲染引擎排列节点而在不同的浏览器中变化。 (虽然还不确定,只是一个想法)。

【讨论】:

【参考方案3】:

在 Mozilla 中实现了一个 xpath generator 组件,尽管它从未成为默认版本。

您可以在我链接到的错误所附的“最终补丁”中找到测试,以了解如何使用它。您也可以查看它的实现,可能会有所帮助。

【讨论】:

【参考方案4】:

可以新建一个domdocument,然后导入node元素

$DD= new DOMDocument('1.0', 'utf-8');
$DD->loadXML( "<html></html>" );
$DD->documentElement->appendChild($DD->importNode($DE,true));

然后你可以在 domelement 中使用 xpath:

$xpathe=new DOMXPath($DD);

【讨论】:

【参考方案5】:

这是一个可能对您有所帮助的 chrome 扩展程序 (CromyQlip)

https://chrome.google.com/extensions/detail/bkmllkjbfbeephbldeflbnpclgfbjfmn

【讨论】:

以上是关于如何为 HTML DOM 元素创建 XPATH?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 DOM 元素生成唯一的 CSS 选择器?

如何为 XML 创建 XPath?

使用XPath选择DOM元素

使用XPath选择DOM元素

如何为 DOM 中的每个元素添加不同的文本

如何为最近的祖先提供 XPath?