我有一个要与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:我想我已经有非常相似的案例,并且相同的表达式对我有用-只是想知道。
答案 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