谈到 XPath 中的索引,我觉得我在这里遗漏了一些东西。
如果我在 HTML 文档中有两个表格标签,并在 Chrome 控制台中键入
$x("//table[1]");,我希望得到页面上的第一个表格标签。
相反,我得到一个包含两个表标签的列表。我怀疑这可能与使用有关
//但是使用绝对 XPath 表达式会产生相同的结果。
我认为这是一个非常简单的误解,但是在阅读文档时我没有看到它。
//table[1]
返回作为其各自父项的第一个子表的所有表。
要获得第一个表,请使用/descendant::table[1]
或在 XPath 2.0(//table)[1]
中。
这是标准中的:
路径表达式//para[1] 与路径表达式/descendant::para[1] 的含义不同。后者选择第一个后代 para 元素;前者选择作为其各自父母的第一个 para 孩子的所有后代 para 元素。
利用
(//table)[1]
即所有表格中的第一个。