在XPath中根据字符串/文本匹配选择元素?

时间:2016-07-07 19:00:17

标签: html xml xpath

对于网页上的HTML表格,我使用以下XPath:

/tr/td[2]/.[contains(text(),'Some')]  

这在所有情况下都可以正常工作,但它也符合'Something'。

/tr/td[2]/.[normalize-space(text()) = 'Some']

在所有情况下都不起作用。 有人可以评论后者的XPath有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您的问题可能不会涉及normalize-space(),而是两个常见的文字/字符串匹配区域之一:

文本节点与字符串值

text()匹配文本节点。

//td[contains(text(), 'Some')]将与此匹配

<td>Some text</td>

但不是

<td><b>Some text</b></td>

要匹配后者,请改用//td[contains(., 'Some')]。这将检查td字符串值是否包含字符串&#34; Some&#34;。

有关详细信息,请参阅XPath text() = is different than XPath . =

字符串包含vs字符串等于

还要注意contains()测试子字符串包含。如果您想要字符串相等,请对字符串使用=运算符:

//td[. = 'Some']

将匹配

<td><b>Some</b></td>

但不是

<td><b>Some text</b></td>

请注意区别。