Xpath 在 2 <br> 标签之前获取数据

nee*_*art 0 html xpath

我需要提取 2 个<br>标签之前的文本,即text 3. 该代码类似于以下内容:

<div>
    <br>
    text1
    <br>
    text2
    <br>
    text3
    <br>
    <br>
    text4
    <br>
</div>
Run Code Online (Sandbox Code Playgroud)

我试过//div/text()[preceding-sibling::br],但是,它提取了所有的文本。

har*_*r07 5

<br>在这种情况下找到 2 个连续的s 比我预期的要棘手,因为这里需要忽略空文本节点(仅由空格组成的节点)。这是一种方式:

/br[
    following-sibling::node()[self::*|self::text()[normalize-space()]
  ][1][self::br]]
Run Code Online (Sandbox Code Playgroud)

第一个谓词查找以下兄弟节点,其类型为元素节点 ( self::*) 或非空文本节点 ( self::text()[normalize-space()])。然后[1]只取第一个找到的节点,最后[self::br]验证找到的节点是<br>

完整的 XPath 表达式如下:

//div
 /br[
    following-sibling::node()[self::*|self::text()[normalize-space()]
  ][1][self::br]]
 /preceding-sibling::text()[1]
Run Code Online (Sandbox Code Playgroud)