首页  >  问答  >  正文

XPath定位两个标签之间的文本

我需要一种方法来选择两个标签之间的文本(第一个标签和随后的
标签):

<div>
<span>abc</span>
defg
<br>
hijkl
<br>
mnop
<span>qrs</span>
tuvw
<br>
xyz
</div>

如何使用xpath表达式仅选择“defg”?

我尝试使用following-sibling来找到第一个标签后面的第一个
标签,但是我找不到选择它们之间的文本的方法。

P粉462328904P粉462328904401 天前434

全部回复(1)我来回复

  • P粉553428780

    P粉5534287802023-09-14 17:41:03

    使用这个XML输入,

    <div>
    <span>abc</span>
    defg
    <br/>
    hijkl
    <br/>
    mnop
    <span>qrs</span>
    tuvw
    <br/>
    xyz
    </div>
    

    XPath表达式/div/span[1]/following-sibling::text()返回第一个元素后面的5个兄弟文本节点:defghijklmnoptuvwxyz,每个节点都以换行符开头和结尾。

    XPath 1.0表达式normalize-space(/div/span[1]/following-sibling::text())将返回defg,没有前导或尾随空白,作为normalize-space()的参数,通过返回节点集中的节点的字符串值将其转换为字符串,该节点在文档顺序中是第一个

    在XPath 2.0及更高版本中,选择序列中的第一个项目,例如:
    normalize-space((/div/span[1]/following-sibling::text())[1]),这在XPath 1.0中也适用。

    回复
    0
  • 取消回复