6
//br/preceding-sibling::normalize-space(text())

我用 nokogiri 得到无效的 xpath 表达式

4

1 回答 1

10

归一化空间是一个函数。你不能在那里使用它。
你需要一个节点集。

也许你的意思是

//br/preceding-sibling::*

或者您可以在方括号内的谓词中使用 normalize-space 。将谓词视为节点集上的过滤器或选择器。所以你可以这样做:

//br/preceding-sibling::*[normalize-space()='Fred']

用英语翻译为“<br>文档中前面的所有元素,并且(规范化的)文本是'Fred'”。在本文档中:

<html>
  <p>
    <h2>Fred</h2>
    <br/>
  </p>
  <table>
    <tr>
      <td>
        <br/>
      </td>
    </tr>
  </table>
</html>

... xpath 表达式选择<h2>节点。

使用 codeplex 上提供的免费 XpathVisualizer 工具解决了这个问题。

在此处输入图像描述

于 2009-10-11T17:28:51.323 回答