如果存在两个元素中的一个,则选择1个元素的XPath

时间:2015-06-01 08:51:56

标签: xpath import.io

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

第1页(折扣价)

<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]

时选择第一个价格

所以最后我想让选择适用于两个页面

2 个答案:

答案 0 :(得分:8)

使用//获取<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)]

结果第1页:

Text='$2,990.00'

结果第二页:

Text='$298.00'

答案 1 :(得分:4)

您可以尝试这种方式:

struct One;
impl One { fn is_empty(self: &Self) -> bool { false } }

第二部分(TraitOrItemId的右侧)仅在没有子//span[@class="originalRetailPrice"] | //div[@class="price" and not(span[@class="originalRetailPrice"])]/text()[1] 的情况下选择|元素。