XPath - Comment sélectionner un noeud qui n'a qu'une classe?

.net c# html-agility-pack xml xpath

Question

Pour xpath sur c #, comment puis-je sélectionner un nœud par classe où le nœud n'a que cette classe?

Par exemple, si j'avais ceci:

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

L'expression xpath donnée "rouge" ne renverra que le second nœud.

Merci.

Réponse populaire

Si vous souhaitez sélectionner tous les éléments span ayant un @class contenant du red et que vous êtes sûr que la chaîne red n'apparaîtra pas ailleurs dans le @class utilisez ceci dans XPATH 1.0:

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

Si le rouge peut apparaître dans une classe différente (par exemple centered ), vous devrez vous complexifier.

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

Si vous pouvez utiliser XPATH 2.0, vous pouvez prendre en compte les deux cas suivants:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi