1

我必须根据某一列中的值来识别表中的某一行,特别是它的第一列。

此表没有 id 值或类值。只是tr'std's

我已经做到了

//tr[td="1"]

但这只会查找其中任何 tabledata 具有与值 1 匹配的文本的表行,而不仅仅是td匹配 1 的第一个。

我不确定如何解决第一个td问题tr并将其匹配到某个值。我想一旦我有了它,我就可以使用类似/ancestor::td的东西回到td

任何人都可以帮忙吗?任何援助将不胜感激。

编辑

在发布此问题后的两分钟内,我发现了这一点

//tr/td[position() = 1 and text() = "pizza 1"]

这让我可以选择第一个td文本值为“pizza 1”的人,所以现在我只需要能够基于此选择 tr。

4

2 回答 2

3

您可以使用嵌套谓词过滤器来查找第一个 TD 元素包含“1”的任何 TR 元素。

//tr[td[position() = 1 and contains(., '1')]]
于 2013-09-15T22:39:18.323 回答
1

如果你想要第一个td匹配的1,你可以使用:

//tr[td="1"][1]

进行编辑后,要获取父级,您可以使用..,因此:

//tr/td[position() = 1 and text() = "pizza 1"]/..

会给你tr而不是td.

更新:

如果您有多行匹配并且只想要第一行,您仍然可以使用[1],只需在整个表达式之外使用它(注意()[1]整个表达式周围):

(//tr/td[position() = 1 and text() = "1"]/..)[1]
于 2013-09-15T22:25:34.187 回答