Comment obtenir tous les éléments HTML qui ont le même attribut de classe?

c# html html-agility-pack xpath

Question

Je développe une application asp.net en utilisant htmlagility dll pour obtenir toutes les balises <div> qui sont les mêmes attributs de classe.
Comment obtenir tous les éléments qui ont la même classe à partir de la page HTML entière,
Je suis top 1 div qui ayant la classe = 'myclass' mais,
mon cas, je veux toutes les balises div qui ont la classe 'myclass'.

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

lorsque j'ai utilisé la méthode ci-dessus, le contenu interne de la classe 'myclass' est contenu dans html, mais dans mon contenu html, il existe de nombreux tags div ayant la classe 'myclass'. Je veux obtenir tous les <div> qui ont la même classe en utilisant HTMLagility ou autre

Réponse acceptée

Ne sélectionnez pas un seul nœud dans ce cas.

Vous utilisez SelectSingleNode , qui ne renverra qu'un seul nœud.

Utilisez plutôt SelectNodes :

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

Réponse populaire

Deux problèmes, le premier est que vous devriez utiliser SelectNodes() comme le soulignent les autres réponses puisque vous souhaitez sélectionner plusieurs nœuds.

En outre, votre XPath est un peu restrictif. Il ne récupérera que des éléments div qui n'ont qu'une classe, myclass mais n'incluent pas ceux qui ont plusieurs classes. Je soupçonne que vous voulez inclure ces derniers aussi. Plutôt que de vérifier si la classe est égale, vérifiez si elle la contient.

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



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