显示文本值的Xpath

问题描述 投票:0回答:1

我正在尝试编写一个 XPATH 来显示项目编号,但我只能弄清楚如何显示文本“项目编号(DPCI)”,而不是实际的项目编号,在示例中为 085-03-7859下面

<div>
 <b>Item Number (DPCI)</b>
 ":"
 "085-03-7859"
 <hr aria-hidden="true">
</div>

image

我尝试了

//b[text()='Item Number (DPCI)']
,但它只显示:项目编号(DPCI)

xpath text
1个回答
0
投票

您想要寻址

text()
节点,该节点是
div
的子节点,而
b
text()
是“项目编号 (DCPI)”。

您使用的 XPath 寻址

b
元素。因此,您可以修改您的 XPath 以从那里开始,然后查找
text()
同级:

//b[text()='Item Number (DPCI)']/following-sibling::text()

有一些空的

text()
,因此您需要排除它们。您可以使用另一个谓词来测试
normalize-space()
(折叠空白字符并仅删除空白)是否选择任何内容:

//div[b ='Item Number (DPCI)']/text()[normalize-space()]

这会给你:

":"
"085-03-7859"

所以,现在您想从该

text()
中解析电话号码。您可以再次使用
normalize-space()
来“展平”该字符串,然后使用
substring-before()
substring-after()
在这些引号之间移动:

substring-before(
  substring-after(
    normalize-space(//div[b ='Item Number (DPCI)']/text()[normalize-space()]), 
    '&quot;:&quot; &quot;'), 
  '&quot;')
© www.soinside.com 2019 - 2024. All rights reserved.