嵌套元素的XPath

时间:2020-11-09 15:01:49

标签: xpath

我有一个要与XPath表达式匹配的嵌套元素-短语content to match。目标元素的代码片段如下所示:

<div class="a">
    <span class="b">
        <span class="c">some content</span>
    content to match
    </span>  
</div>

我尝试了一些表达式,但都失败了。这些是:

//div[@class="a"]/span[1]/text()

//span[@class="b"]/text()

我的错误是什么?你能纠正我的表情吗?

ps:我想我已经有非常相似的案例,并且相同的表达式对我有用-只是想知道。

2 个答案:

答案 0 :(得分:2)

您可以执行count(//span[@class="b"]/text())来查看span包含2个文本节点:空字符串(子span之前的文本节点)和"content to match"。大多数工具会返回//span[@class="b"]/text()的第一个节点-空字符串

所以尝试

//div[@class="a"]/span/span/following-sibling::text()

//span[@class="b"]/text()[last()]

答案 1 :(得分:1)

另一种方法-并获得清理的文本是:

normalize-space(//text()[normalize-space(.)][../span[@class="c"]])

确切的输出:

content to match