Задать вопрос
Radzhab
@Radzhab

Как организовать выборку элементов в HtmlAgilityPack?

В переменной tr 4 вхождения. В цикле foreach я пробегаюсь по этому списку и каждый раз в переменной item новые данные, однако item.SelectSingleNode всегда возвращает одно и тоже значение. Что я делаю не так? Есть конечно вариант занести все вхождения сразу в список - список фирм отдельно, список артикулов отдельно и потом их в общий список, но может быть и так, что артикулов может быть больше чем фирм.
var nodes = doc.DocumentNode.SelectSingleNode("//table[@class='ResTab sortable']");
    var tr = nodes.SelectNodes("//tr[contains(@id,'ctl00_mainPlace_SearchRepeater')]");

    foreach (var item in tr)
             {
               var articul =item.SelectSingleNode("//td[@class='NumberTH']").InnerHtml;
               var firm =tr.SelectSingleNode("//td[@class='FirmTH']").InnerHtml);
            }

77c979e7ab944d6db0a244e8a5c05e81.png
  • Вопрос задан
  • 374 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@VZVZ
Reverse-Engineer, Software Developer, Architect
Проблема в ваших XPath-выражениях.

// - абсолютный путь, действует в контексте ВСЕГО документа, возвращает первую ветвь в документе, а не в той ветви, где вы это хотите. В этом случае SelectSingleNode всегда срабатывает как doc.DocumentNode.SelectSingleNode

.// - относительный путь, действует именно относительно ДАННОЙ ветви
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы