XPath - Come selezionare il nodo che ha solo 1 classe?

.net c# html-agility-pack xml xpath

Domanda

Per xpath su c #, come posso selezionare un nodo per classe dove il nodo ha solo quella classe?

Ad esempio, se avessi questo:

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

L'espressione xpath data "red" restituirà solo il secondo nodo.

Grazie.

Risposta popolare

Se si desidera selezionare tutti span elementi che hanno un @class che contiene red e si è sicuri che la stringa red non apparirà in altre parti del @class utilizzare questo in XPath 1.0:

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

Se il rosso può apparire in una classe diversa (come dire centered ), devi diventare più complesso

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

Se è possibile utilizzare XPATH 2.0, è possibile tenere conto di entrambi i casi in questo modo:

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché