7

金曜日のこの段階で本当に頭が痛くなりました!InsertAfter() を使用して HtmlNode を別のノードに追加しようとしています。コンソールに rpint すると、breadcrumbs の ID を持つ 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']") の両方をコンソールに出力し、画面にノードを表示できます。ここでどこが間違っているのかについてのアイデアはありますか?

ありがとう、デニス

4

1 に答える 1

9

ソースの非常に大雑把な調査から、それはあなたが呼び出すノードの直接の子になりInsertAfterたいように見えます。子孫軸全体(を使用して)でノードを検索しているため、渡す実際のノードがの直接の子ではない可能性があります。refChildInsertAfter//divrefChildHtmlWrapper

変数をプルしてから、そのHtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']")変数を呼び出してみてください。InsertAfterParentNode

于 2010-01-22T15:56:11.933 に答える