Обозначение XPath в значении атрибута

c# html-agility-pack xpath

Вопрос

У меня есть следующий XPath для соответствия атрибутам класса:

//span[@class='amount']

Я хочу сопоставить все элементы, которые имеют атрибут класса «сумма», но также могут иметь и другие классы. Я думал, что смогу сделать это:

//span[@class='*amount*'] 

но это не работает ... как я могу это сделать?

Принятый ответ

Используйте следующее выражение:

//span[contains(concat(' ', @class, ' '), ' amount ')]

Вы можете использовать contains в себе, но это будет также соответствовать классам , как someamount . Проверьте приведенное выше выражение на следующем входе:

<root>
  <span class="test amount blah"/>
  <span class="amount test"/>
  <span class="test amount"/>
  <span class="amount"/>
  <span class="someamount"/>
</root>

Он выберет первые четыре элемента span , но не последний.


Популярные ответы

Вам нужно использовать метод contains. См. Раздел Как использовать XPath contains () здесь?

//span[contains(@class,'amount')]



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему