我應該如何使用HTMLAgilityPack AppendNode?

c# html-agility-pack screen-scraping

星期五這個階段真的很頭疼!我正在嘗試使用InsertAfter()將HtmlNode添加到另一個。當我將它發送到控制台時,我可以看到id為breadcrumbs的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的節點的直接子節點。由於您正在搜索div節點的整個後代軸(帶// ),因此您作為refChild傳遞的實際節點可能不是HtmlWrapper直接子 HtmlWrapper

嘗試拉HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']")到一個變量,然後調用InsertAfterParentNode



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow