【发布时间】:2014-11-29 23:40:25
【问题描述】:
这是 HTML 代码:
<div> <span></span> Elangovan </div>
我想根据其包含的文本为div 编写一个XPath。我试过了
//div[contains(text(),'Elangovan')]
但这不起作用。
【问题讨论】:
这是 HTML 代码:
<div> <span></span> Elangovan </div>
我想根据其包含的文本为div 编写一个XPath。我试过了
//div[contains(text(),'Elangovan')]
但这不起作用。
【问题讨论】:
将text() 替换为string():
//div[contains(string(), "Elangovan")]
或者,您可以检查span 的以下文本兄弟是否包含该文本:
//div[contains(span/following-sibling::text(), "Elangovan")]
另见:
【讨论】:
Hello World
这样的文本【讨论】:
为了使@kjhughes 已经很好的答案更加精确,您真正需要的是一种在div 的string-value 中查找子字符串的方法:
对于每种类型的节点,都有一种确定字符串值的方法 对于该类型的节点。对于某些类型的节点,字符串值是 节点的一部分;对于其他类型的节点,字符串值为 根据后代节点的字符串值计算。
上下文节点(. 或div 本身)和text() 返回的节点集——或任何其他参数! -- 在传递给contains 时首先转换为字符串。只是它们以不同的方式转换,因为一个指的是单个元素,另一个指的是节点集。
单个元素的字符串值是其所有文本节点后代的字符串值的串联。另一方面,节点集的字符串值是集合中按文档顺序排在第一位的节点的字符串值。
因此,真正的区别在于您要转换为字符串的内容以及转换的发生方式。
【讨论】: