Как получить все элементы из HTML, которые имеют один и тот же атрибут класса? - PullRequest
1 голос
/ 28 сентября 2011

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

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

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

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

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

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");
0 голосов
/ 29 сентября 2011

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

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

var xpath = "//div[contains(@class,'myclass')]";
var query = doc.DocumentNode.SelectNodes(xpath);
0 голосов
/ 28 сентября 2011

Вы в значительной степени ищете XML-документ для этих узлов.

Прежде всего, вы выбираете один узел, который будет возвращать только 1. Вам нужно использовать SelectNodes.

пример:

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

Обновление - удалено мое предложение Xpath, так как оно не сработало так, как я думал, что будет ...

...