XPath для выбора 1 элемента, если существует один из двух
Я хочу выбрать один элемент, если один из 2 существует при использовании этого для 2 страниц
1-я страница (цена со скидкой)
<div class="price">
<span class="originalRetailPrice">,990.00</span>
</div>
</div>
<div class="price">
<span class="salePrice">,794.00</span>
</div>
или 2-я страница (только одна цена)
<div class="price">
8.00
</div>
я использовал
//span[@class="originalRetailPrice"] | (//div[@class="priceBlock"])[1]
но я получаю цену дважды
что я хочу, это выбрать первую цену, когда это class="originalRetailPrice"
или //div[@class="price"]/text()[1]
Итак, наконец, я хочу сделать выбор для работы на обеих страницах
2 ответов
использовать //
получить тексты на любом уровне внутри <div class="price">
:
//div[@class="price"][1]//text()
результат:
Text=''
Text=',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=',990.00'
результат 2-й странице:
Text='8.00'
можно попробовать так :
//span[@class="originalRetailPrice"] | //div[@class="price" and not(span[@class="originalRetailPrice"])]/text()[1]
2-я часть (правая сторона |
) выберите div[@class="price"]
элемент, только если у него нет дочернего элемента span[@class="originalRetailPrice"]
.