10

我的 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 返回空字符串。我想忽略这些空字段,我该怎么做?

4

2 回答 2

19

使用

//div
   [.//text()
        [normalize-space() = 'i need this text']
   ]
    //text()[normalize-space()]

这会选择文档中 any 的任何非纯空格文本节点后代div,即 (the div) 具有其规范化字符串值为 string 的文本节点后代"i need this text"

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

于 2012-04-23T01:30:51.113 回答
-1

试试这个选择器:

//span[@class='glyphicon glyphicon-list mr5']/..[contains(normalize-space(text()),'Applications')]

于 2015-10-30T07:53:41.240 回答