XPath - Как выбрать узел, который имеет только 1 класс?

.net c# html-agility-pack xml xpath

Вопрос

Для xpath на c #, как я могу выбрать узел по классу, где узел имеет только один класс?

Например, если бы у меня было это:

<span class="red blue"></span>
<span class="red"></span>

Выражение xpath, указанное «red», вернет только второй узел.

Благодарю.

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

Если вы хотите выбрать все элементы span , в которых есть @class, который содержит red и вы уверены, что строка red не появится в другом месте в @class используйте это в XPATH 1.0:

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

Если красный цвет может появляться в другом классе (например, centered ), вам нужно будет усложниться

//span[contains(concat(' ', normalize-space(@class), ' '), ' red ')]

Если вы можете использовать XPATH 2.0, вы можете учитывать оба случая:

//span[tokenize(@class,'\s+')[. eq 'red']]


Related

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