我的 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 返回空字符串。我想忽略这些空白字段,我该怎么做?
最佳答案
使用:
//div
[.//text()
[normalize-space() = 'i need this text']
]
//text()[normalize-space()]
这将选择文档中任何 div
的任何非空白文本节点后代,该(div
)具有一个文本节点后代,其规范化字符串值是字符串 "i need this text"
。
normalize-space()
函数接受一个字符串(上下文节点的字符串值——如果未指定参数)并从中生成另一个字符串,其中所有前导和尾随空白字符都被删除,并且相邻空白字符的任何内部组是替换为一个空格。
关于xml - 带有 text() 但没有空格的嵌套元素的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272158/