我的XHTML很差,我需要用xpath解析。它看起来像这样:
<div class="foo">
i need this text
<br/>
<br/>
<span>sometext</span>
</div>
<div class="foo">
<span>some other text</span>
<span>sometext</span>
</div>
我想在第一个div中选择“我需要此文本”的所有内容。我的问题是,div元素包含空格或其他东西,所以// div [@ class =“foo”] / text()也为第二个div返回空字符串。我想忽略这些空白字段,我该怎么做?
答案 0 :(得分:14)
使用强>:
//div
[.//text()
[normalize-space() = 'i need this text']
]
//text()[normalize-space()]
这将选择文档中任何div
的任何非空白文本节点后代,(div
)具有文本节点后代,其标准化字符串值为字符串{{1 }}
normalize-space()
函数接受一个字符串(上下文节点的字符串值 - 如果没有指定参数)并从中生成另一个字符串,其中包含所有前导和尾随空白字符被删除,相邻空白字符的任何内部组都被一个空格替换。
答案 1 :(得分:-1)
试试这个选择器:
//span[@class='glyphicon glyphicon-list mr5']/..[contains(normalize-space(text()),'Applications')]