给出以下示例HTML代码:
<table>
<tr>
<td>
<div>Value 1</div>
</td>
<td>
<div>Value A</div>
</td>
</tr>
<tr>
<td>
<div>Value 1</div>
</td>
<td>
<div>Value B</div>
</td>
</tr>
<tr>
<td>
<div>Value A</div>
</td>
<td>
<div>Value 1</div>
</td>
</tr>
</table>
是否可以编写一个xpath表达式来选择(tr)元素,该元素在第一列的div中具有“Value 1”,在第二列的div中具有“Value 2” 柱?在这个例子中,我只想要第一行。
如果我检索所有具有“值1”的后代的行,我将获得所有3行。
如果我检索所有具有“值1”和“值A”的后代的行,我将得到第1行和第3行。
重要的不仅仅是价值,还包括订单。另外,在我的实际情况中,有几列,我需要检查的列可能不是并排的。 (可能是我需要检查第4 7和9列,例如)
我想我正在寻找这样的东西,但它不适合我(奇怪的格式是为了可读性,但我相信它仍然有效):
//table//tr
[
(.//div[position()=1 and text()='Value 1'])
and
(.//div[position()=2 and text()='Value A'])
]
我也试过[1]和[2]而不是位置()无济于事。有任何想法吗?感谢
答案 0 :(得分:0)
你的表达对我有用,虽然我会这样写:
//table/tr[td[1]/div = 'Value 1' and td[2]/div = 'Value A']
答案 1 :(得分:0)
简单
//tr[normalize-space(td[1]/div) = 'Value 1' and normalize-space(td[2]/div) = 'Value A']
演示 - http://www.xpathtester.com/obj/e3d5b9bf-79d5-4e81-a336-daba38d430fe