<table border="1">
<tbody>
<tr>
<th>ID</th>
<th>Product</th>
<th>Color</th>
<th>Model</th>
</tr>
<tr>
<td>22</td>
<td>Car</td>
<td>blue</td>
<td>
<ul>
</ul>
</td>
</tr>
</tbody>
</table>
上面是一个高度嵌套的html文档的片段。为了获得表级别,我使用了以下xpath
//th[contains(text(), "ref_code")]/following-
sibling::td[contains(text(), "197")]/ancestor::table[2]
然后如何编辑相同的xpath并使用xpath选择特定的表头数据和相应的表数据列:
ID |产品|颜色
22 |车|蓝色
任何帮助将不胜感激
答案 0 :(得分:2)
从您的评论到这里给出的答案: 我假设您从现有的xpath获取上表:
//th[contains(text(), "ref_code")]/following-
sibling::td[contains(text(), "197")]/ancestor::table[2]
现在您要添加/编辑此xpath,以便在给定列的情况下获取td
的值。 Color
,然后下面的xpath应该为给定td
的所有列提供Color
值作为输入:
//td[position()<=(count(//tr/th[.='Color']/preceding-sibling::*)+1) ]
假设您的第一个xpath正常工作,请将上面的xpath添加到:
//th[contains(text(), "ref_code")]/following-
sibling::td[contains(text(), "197")]/ancestor::table[2]//td[position()<=(count(//tr/th[.='Color']/preceding-sibling::*)+1) ]
输出:
<td>22</td>
<td>Car</td>
<td>blue</td>
如果您只想要Color
,请使用xpath:
//td[(count(//tr/th[.='Color']/preceding-sibling::*)+1) ]
如果您只想使用Product
使用xpath:
//td[(count(//tr/th[.='Product']/preceding-sibling::*)+1) ]
如果您只想使用ID
使用xpath:
//td[(count(//tr/th[.='ID']/preceding-sibling::*)+1) ]
请注意,xpath在th[.='XXX']
处更改,其中XXX
是所选元素。
但如果您希望输出采用表格形式,则需要使用XSLT
,因为您正在尝试获取HTML的转换视图,而不仅仅是选定的元素。
答案 1 :(得分:0)
我们按列//table//td
//table//th[text()='Color']
[count(element/preceding-sibling::*) +1]
是如何查找元素的索引
结果是:
//table//td[count(//table//th[text()='Color']/preceding-sibling::*) +1]