标记数据的 XPath?

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

我想读取第二个

div
内的数据:

<div class="my-3">
  <div class="d-flex justify-content-between">Monthly:</div>
  <div>0 / 30,000</div>
</div>

在上面的标记中,我想读取包含字符串的

div
0 / 30,000

我能够使用此 XPath 导航到包含字符串

div
的第一个
"Monthly:"

//*[normalize-space()='Monthly:']

之后如何选择下面的第二个

div

html xml xpath
2个回答
1
投票

使用这个:

//*[normalize-space()='Monthly:']/following-sibling::div

0
投票

当前接受的答案的局限性

当前接受的答案中的 XPath,

//*[normalize-space()='Monthly:']/following-sibling::div

适用于OP的确切情况,其中目标标签后面有一个

div

<div class="my-3">
  <div class="d-flex justify-content-between">Monthly:</div>
  <div>0 / 30,000</div>
</div>

但如果目标后面有多个

div
同级元素,可能会产生不同的结果。

例如,考虑以下标记:

<div class="my-3">
  <div class="d-flex justify-content-between">Monthly:</div>
  <div>0 / 30,000</div>
  <div>more</div>
  <div>and more</div>
</div>

在这种情况下,不仅会选择

<div>0 / 30,000</div>
,还会选择

  <div>0 / 30,000</div>
  <div>more</div>
  <div>and more</div>

要仅选择 紧随其后的

div
元素,请改用此 XPath:

//*[normalize-space()='Monthly:']/following-sibling::*[1][self::div]

要选择仅紧随任何名称的后续元素

//*[normalize-space()='Monthly:']/following-sibling::*[1]
© www.soinside.com 2019 - 2024. All rights reserved.