Как получить весь элемент из HTML, который имеет одинаковый атрибут класса?

c# html html-agility-pack xpath

Вопрос

Я разрабатываю одно приложение asp.net, в котором я использую dll htmlagility для получения всех тегов <div> которые являются одинаковыми атрибутами класса.
Как получить все элементы, которые имеют одинаковый класс со всей страницы html,
Я получаю топ 1 div, у которого есть класс = 'myclass', но в,
в моем случае я хочу, чтобы все теги div, у которых есть класс myclass.

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

когда я использовал выше метод, то я получаю внутреннее содержимое html в «myclass», но в моем содержимом html есть много тегов div, у которых есть класс «myclass». Я хочу получить все <div> которые имеют один класс, используя HTMLagility или другие

Принятый ответ

Не выбирайте ни одного узла в этом случае.

Вы используете SelectSingleNode , который будет возвращать только один узел.

SelectNodes этого используйте SelectNodes :

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

Популярные ответы

Два вопроса: во-первых, вы должны использовать SelectNodes() как указывали другие ответы, поскольку вы хотите выбрать несколько узлов.

Кроме того, ваш XPath является немного ограничительным. Он будет получать только элементы div которые имеют только один класс, myclass но не включают те, которые имеют несколько классов. Я подозреваю, что вы хотите включить их также. Вместо того, чтобы проверять, является ли класс равным, проверьте, содержит ли он его.

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


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему