对于这样的HTML页面,我正在编写两个xpath语句以从td元素获取文本。第一个xpath是获取与我的要求匹配的th元素的位置。
count(.//th[contains(., 'Header5')]/preceding-sibling::*)+1
然后我将上面返回的计数值放入此xpath并获取文本
.//tr[2]/td[**count**]
如何将这两个xpath合并为单个xpath并获得结果。我尝试过类似的方法,但是它总是选择第一个td
.//tr[2]/td[count(.//th[contains(., 'Header5')]/preceding-sibling::*)+1]
(.//tr[2]/td)[count(.//th[contains(., 'Header5')]/preceding-sibling::*)+1]
这是html结构
<thead>
<th> Header1 </th>
<th> Header2 </th>
<th> Header3 </th>
<th> Header4 </th>
<th> Header5 </th>
<th> Header6 </th>
</thead>
<tbody>
<tr>
<tr>
<td> Cell1 </td>
<td> Cell2 </td>
<td> Cell3 </td>
<td> Cell4 </td>
<td> Cell5 </td>
<td> Cell6 </td>
</tr>
</tbody>
答案 0 :(得分:1)
这应该可以解决问题:
.//tr[2]/td[count(//th[contains(., 'Header5')]/preceding-sibling::th) + 1]
请注意,/td[count(.//th)]
表示属于th
的后代的td
个节点的个,而/td[count(//th)]
表示< em>在DOM中th
的数量 ,因此请小心上下文节点(点)