xml - 带有 text() 但没有空格的嵌套元素的 XPath

标签 xml xpath xhtml

我的 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/

相关文章:

java - 通过套接字连接发送数据库数据

xml - XSLT 忽略重复元素

XML 编写器命名空间

xml - Xpath:简单条件检查并在 Xpath 表达式中赋值

xml - mstile 图像位置规范

css - 提取 :after using XPath 中的内容

php - DOM/xpath 与 php 一起使用来处理外部站点?

javascript - 打开没有菜单栏的浏览器窗口(JavaScript?)

html - 属性 "lang"存在,但不能用于此元素。? W3C 验证错误

php - 黑钻问号