我试图在指定的其他节点出现后在HTML文档中找到任何节点。不仅在兄弟姐妹和孩子中,而且在远亲中也是如此。 从本质上讲,这基本上是从HTML文档开始的线性搜索,我知道这在某种程度上与xpath的层级性质相反。
我需要一个包含两个非常相似的表的页面,我要在其中处理第二个表。
这是一个简化的示例
<div>
<div>
<title>Table1</title>
</div>
</div>
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Val1</td>
<td>Val2</td>
</tr>
</tbody>
</table>
<div>
<div>
<title>Table2</title>
</div>
</div>
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
</tr>
</thead>
<tbody>
<tr>
<td>OtherVal1</td>
<td>OtherVal2</td> (==>This is the element I want)
</tr>
</tbody>
</table>
这个示例当然会使操作变得容易
//title[text()='Table2']/../../following-sibling::table/tbody/tr/td[2]
(如建议的in this topic)
或者也许
//table[2]/tbody/tr/td[2]
但是我正在使用的真实文档具有更多的<div>
和其他标签。区分这两个表的最自然的方法仍然是标题。
这就是为什么我想做这样的事情:
//title[text()='Table2']/[parseWholeCodeAfterThis]/table/tbody/tr/td[2]
答案 0 :(得分:1)
我猜您正在寻找following
轴:
//title[text()='Table2']/following::table//tr/td[2]
这应该允许您选择table
,该文本位于{em> {em}
title
节点后在DOM中的某个位置