第一个词的XPath?

问题描述

对于这个 HTML/XML:

<div class="contentBlock">
  <h2> </h2>
  <h1></h1>
  <h1>DBS055 - single  module packages</h1>
</div>

我只想用 XPath 提取 DBS055,而不是整个文本。

解决方法

XPath 2.0

//h1[normalize-space()]/replace(normalize-space(),'^([\w\-]+).*','$1')

将返回在其字符串值中具有非空格字符的那些 h1 元素的字符串值的所有第一个单词。

XPath 1.0

substring-before(
  concat(
    normalize-space(
      translate(//h1[normalize-space()][1],',;/.',' ')),' '),' ')

近似于更强大的 XPath 2.0 解决方案。根据需要为您考虑定义单词边界的各种字符扩展 ',;/.'

说明:

  1. 选择第一个具有非空白字符串值的 h1
  2. 将所有单词边界字符映射到空格。
  3. 附加一个空格以覆盖单个单词的大小写。
  4. 规范间距。
  5. 返回第一个空格之前的子字符串。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...