HtmlAgilityPack разных версий работает по-разному C#

Есть программа, в которой при помощи xpath-запроса можно получить ссылки на изображения. Запрос:

var screen = HD.DocumentNode.SelectNodes("//textarea[@class='hidearea']/a");

Данные в Html Agility Pack загружаются следующим образом:

HD.LoadHtml(responseToString);

Где responseToString содержит следующий код: https://jsfiddle.net/7fhyv1an/

Но переменная screen всегда возвращает null. При этом, аналогичный код в другой программе работает как надо. Единственное отличие: в программе, где он работает, версия Html Agility Pack - 1.4.5.9. А в программе, где он не работает, стоит Html Agility Pack версии 1.11.22.

Еще недавно заметил такую особенность на версии 1.4.5.9: программа отработала первую ссылку, скачала картинки. Я вставляю эту же ссылку второй раз (либо новую, без разницы), но картинки уже не находит. Выдает ошибку, что ссылка на объект не указывает на экземпляр объекта.

При этом, данной программой я пользуюсь уже года 2. И всегда все было нормально. А теперь вот такая проблемка...


Ответы (1 шт):

Автор решения: aepot

Ответ найден. Что я могу сказать, HtmlAgilityPack просто поумнел.

Содержимое тега <textarea> он теперь воспринимает не как HTML а как ноду типа textarea, что технически вполне логично, поэтому содержимое этой ноды нельзя напрямую получить через xpath. Это просто текст, а не список нод.

Чтобы распарсить это содержимое в список нод, можно пойти таким путем.

HD.LoadHtml(responseToString);
HtmlNodeCollection screen = HD.DocumentNode.SelectNodes("//textarea[@class='hidearea']");
HD.LoadHtml(screen[0].InnerHtml);
screen = HD.DocumentNode.SelectNodes("//a");

Код написан грубо, может наградить вас исключениями, поэтому обработка ошибок на вашей совести. Я просто показываю смысл всей этой истории с <textarea>

→ Ссылка