XPath-选择具有内部文本甚至子元素文本的元素

时间:2019-11-26 16:37:50

标签: xpath

我有这个HTML

<div>
    I
    <span> need</span>
    this
    <span> text</span>
</div>

我想找到这个div,看看里面有什么文本(连接所有文本)。

类似//div[text() = 'I need this text'],但它当然不起作用。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

尝试使用normalize-space() ...

//div[normalize-space() = 'I need this text']

答案 1 :(得分:1)

您的尝试即将结束;试试这个表达式:

div[normalize-space(string-join(.//text(),''))='I need this text']

表达式首先将元素中的所有文本节点连接在一起,然后从连接的字符串中删除空格,最后寻找一个元素(在这种情况下为div),该元素的属性为其文本节点的规范化字符串等于目标字符串。

答案 2 :(得分:0)

这应该对您有帮助

//div[. = 'I need this text']