1

我有一些这样的 HTML:

   <div>  Make </div>

我想根据节点内容包含文本“Make”的事实来匹配它。

换句话说,“Make”是div节点内容的子字符串,我想使用 XPath 在该节点上进行这样的匹配。

4

3 回答 3

3

显而易见的解决方案是

//div[contains(., 'Make')]

但这会在其内容中的任何位置找到包含字符串“Make”的所有 div,因此它不仅会找到您在问题中给出的示例,还会找到该示例的任何祖先 div,或者该子字符串被埋藏的任何 div在后代元素的深处。

如果您只想要该字符串直接位于 div 内部而没有其他干预元素的情况,那么您必须使用稍微复杂的

//div[text()[contains(., 'Make')]]

这与微妙的不同

//div[contains(text(), 'Make')]

它只会在 div 的第一个文本节点子节点中查找,所以它会找到<div>Make<br/>Break</div>不会 <div>Break<br/>Make</div>

如果您想允许div 之外的其他元素,请尝试

//div[contains(., 'Make')][not(.//div[contains(., 'Make'])]
于 2013-11-06T18:44:49.923 回答
1

似乎这就是您要寻找的东西://div[contains(text(),'Make')]

如果这不起作用,您可以尝试://div[contains(.,'Make')]. 这将找到所有属性中包含“Make”的所有 div。

于 2013-11-06T18:43:24.723 回答
1

要在文档中的任何位置找到该节点,您需要:

//div[contains(text(), "Make")]
于 2013-11-06T18:44:28.267 回答