我有一些这样的 HTML:
<div> Make </div>
我想根据节点内容包含文本“Make”的事实来匹配它。
换句话说,“Make”是div
节点内容的子字符串,我想使用 XPath 在该节点上进行这样的匹配。
我有一些这样的 HTML:
<div> Make </div>
我想根据节点内容包含文本“Make”的事实来匹配它。
换句话说,“Make”是div
节点内容的子字符串,我想使用 XPath 在该节点上进行这样的匹配。
显而易见的解决方案是
//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'])]
似乎这就是您要寻找的东西://div[contains(text(),'Make')]
如果这不起作用,您可以尝试://div[contains(.,'Make')]
. 这将找到所有属性中包含“Make”的所有 div。
要在文档中的任何位置找到该节点,您需要:
//div[contains(text(), "Make")]