10

如果在将其用于 2 页时存在 2 个元素中的一个,我想选择一个元素

第一页(折扣价)

<div class="price">
  <span class="originalRetailPrice">$2,990.00</span>
  </div>
</div>
<div class="price">
      <span class="salePrice">$1,794.00</span>
</div>

或第二页(只有一个价格)

<div class="price">
  $298.00
</div>

我用过 //span[@class="originalRetailPrice"] | (//div[@class="priceBlock"])[1] ,但我得到了两倍的价格

我想要的是选择第一个价格是什么时候class="originalRetailPrice"或者什么时候//div[@class="price"]/text()[1]

所以最后我想让选择在两个页面上都起作用

4

2 回答 2

9

用于//获取内部任何级别的文本<div class="price">

//div[@class="price"][1]//text()

结果:

Text=''
Text='$2,990.00'
Text=''

并过滤空文本:text()[normalize-space() and not(ancestor::a | ancestor::script | ancestor::style)]

//div[@class="price"][1]//text()[normalize-space() and not(ancestor::a | ancestor::script | ancestor::style)]

结果第一页:

Text='$2,990.00'

结果第二页:

Text='$298.00'
于 2015-06-01T09:16:35.600 回答
4

您可以尝试这种方式:

//span[@class="originalRetailPrice"] | //div[@class="price" and not(span[@class="originalRetailPrice"])]/text()[1]

仅当它没有 child 时,第二部分(右侧|)才选择元素。div[@class="price"]span[@class="originalRetailPrice"]

于 2015-06-01T09:17:12.203 回答