Come ottenere tutti gli elementi da HTML che hanno lo stesso attributo di classe?

c# html html-agility-pack xpath

Domanda

Sto sviluppando un'applicazione asp.net in cui utilizzo htmlagility dll per ottenere tutti i tag <div> che sono gli stessi attributi di classe ..
Come ottenere tutti gli elementi che hanno la stessa classe dall'intera pagina html,
Ricevo il primo div in classe che ha classe = 'myclass' ma in,
il mio caso voglio tutti i tag div che hanno classe 'myclass'.

var vardoc = web.Load("<any website url>"); 
var varmyclass = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']"); 

quando ho usato il metodo di cui sopra, ottengo il contenuto html interno del 'myclass', ma nei miei contenuti html ci sono molti tag div che hanno classe 'myclass'. Voglio ottenere tutti i <div> che hanno la stessa classe usando HTMLagility o altro

Risposta accettata

Non selezionare un singolo nodo in quel caso.

Stai usando SelectSingleNode , che restituirà solo un nodo.

Usa SelectNodes invece:

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");

Risposta popolare

Due problemi, il primo è che dovresti usare SelectNodes() invece come le altre risposte hanno sottolineato dal momento che vuoi selezionare più nodi.

Inoltre, il tuo XPath è un po 'restrittivo. myclass solo elementi div che ha solo una classe, myclass ma non include quelli che hanno più classi. Sospetto che tu voglia includere anche quelli. Piuttosto che controllare se la classe è uguale, controlla se la contiene.

var xpath = "//div[contains(@class,'myclass')]";
var query = doc.DocumentNode.SelectNodes(xpath);



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é