¿Cómo obtener todos los elementos de HTML que tienen el mismo atributo de clase?

c# html html-agility-pack xpath

Pregunta

Estoy desarrollando una aplicación asp.net en la que utilizo htmlagility dll para obtener todas las etiquetas <div> que son los mismos atributos de clase ...
Cómo obtener todos los elementos que tienen la misma clase de toda la página html,
Obtengo top 1 div que tiene clase = 'myclass' pero en,
En mi caso, quiero todas las etiquetas div que tengan la clase 'myclass'.

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

cuando utilicé el método anterior, obtengo contenido html interno de 'myclass', pero en mi contenido html hay muchas etiquetas div que tienen la clase 'myclass'. Quiero obtener todos los <div> que tienen la misma clase usando HTMLagility u otro

Respuesta aceptada

No seleccione un solo nodo en ese caso.

Está utilizando SelectSingleNode , que devolverá solo un nodo.

Utilice SelectNodes en SelectNodes lugar:

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

Respuesta popular

Dos problemas, el primero es que debe usar SelectNodes() lugar de lo que han señalado las otras respuestas, ya que desea seleccionar varios nodos.

Además, tu XPath es un poco restrictivo. Solo obtendrá elementos div que tienen solo una clase, myclass pero no incluye aquellos que tienen varias clases. Sospecho que también quieres incluir esos. En lugar de verificar si la clase es igual, compruebe si la contiene.

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


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é