xpath:查找其内容具有提供的字符串的节点

时间:2013-11-06 18:05:50

标签: xpath

我有一些像这样的HTML:

   <div>  Make </div>

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

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

3 个答案:

答案 0 :(得分: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'])]

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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