对带有text()但没有空格的嵌套元素进行XPath

Jan*_*nis 10 xml xhtml xpath

我的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>
Run Code Online (Sandbox Code Playgroud)

我想在第一个div中选择"我需要这个文本"的所有内容.我的问题是,div元素包含空格或其他东西,所以// div [@ class ="foo"]/text()也为第二个div返回空字符串.我想忽略这些空白字段,我该怎么做?

Dim*_*hev 15

用途:

//div
   [.//text()
        [normalize-space() = 'i need this text']
   ]
    //text()[normalize-space()]
Run Code Online (Sandbox Code Playgroud)

这将选择div文档中any的任何非空白文本节点后代,即(div)具有文本节点后代,其标准化字符串值为字符串"i need this text".

normalize-space()函数接受一个字符串(上下文节点的字符串值 - 如果没有指定参数)并从中生成另一个字符串,其中所有前导和尾随空格字符都被删除,并且任何相邻空白字符的内部组被替换为单一空间.