Как использовать HTMLAgilityPack AppendNode?

c# html-agility-pack screen-scraping

Вопрос

Получилась настоящая головная боль на этом этапе в пятницу! Я пытаюсь добавить HtmlNode к другому, используя InsertAfter (). Я вижу узел refChild с идентификатором сухарей, когда я вставляю его в консоль, но продолжаю получать следующую ошибку:

System.ArgumentOutOfRangeException: Node "<div id="breadcrumb"></div>" was not f
ound in the collection
Parameter name: node
   at HtmlAgilityPack.HtmlNodeCollection.get_Item(HtmlNode node)
   at HtmlAgilityPack.HtmlNode.InsertAfter(HtmlNode newChild, HtmlNode refChild)

   at MyHome.Tasks.Tasks.DownloadandStoreContent(KeyValueP
air`2 urlPair, String filePath, HtmlNode HtmlWrapper) in C:\Users\denis\Document
s\Visual Studio 2008\Websites\MyHomeV2\MyHome.Tasks\Tasks.cs:line 81
   at MyHome.Tasks.Tasks.GenerateContent(String scrape
sSwitch, String filePath) in C:\Users\denis\Documents\Visual Studio 2008\Website
s\MyHomeV2\MyHome.Tasks\Tasks.cs:line 27
   at MyHome.Tasks.Program.Main(String[] args) in C:\Users\denis\Documents\Visua
l Studio 2008\Websites\MyHomeV2\MyHome.Tasks\Program.cs:line 87

Мой код:

HtmlWrapper.InsertAfter(ContentNode, HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']"));

И, как уже упоминалось, я распечатал как HtmlWrapper, так и HtmlWrapper.SelectSingleNode ("// div [@ id = 'breadcrumb']") на консоли и может видеть узел на экране. Какие-нибудь идеи о том, где я ошибаюсь?

Спасибо, Денис

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

Из очень поверхностного рассмотрения источника, похоже, что InsertAfter хочет, чтобы refChild был прямым дочерним элементом узла, который вы вызываете InsertAfter on. Поскольку вы ищете всю ось потомков (с // ) для вашего узла div , возможно, что фактический узел, который вы передаете как refChild , не является прямым дочерним элементом HtmlWrapper .

Попробуйте потянуть HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']") в переменную, а затем вызвать InsertAfter на своем ParentNode .



Related

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