XPath - ¿Cómo seleccionar un nodo que tiene solo 1 clase?

.net c# html-agility-pack xml xpath

Pregunta

Para xpath en c #, ¿cómo puedo seleccionar un nodo por clase donde el nodo solo tiene esa clase 1?

Por ejemplo, si tuviera esto:

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

La expresión xpath dada "rojo" solo devolverá el segundo nodo.

Gracias.

Respuesta popular

Si desea seleccionar todos los elementos de span que tienen una @class que contiene red y está seguro de que la cadena red no aparecerá en ninguna otra parte de @class use esto en XPATH 1.0:

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

Si el rojo puede aparecer dentro de una clase diferente (como, por ejemplo, centered ), tendrá que ser más complejo

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

Si puede usar XPATH 2.0, puede dar cuenta de ambos casos como este:

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué