HTMLAgilityPack AppendNodeはどのように使うべきですか?

c# html-agility-pack screen-scraping

質問

金曜日のこの段階で本当に頭痛を覚えました!私はInsertAfter()を使用して別のHtmlNodeを追加しようとしています。ブレッドクラムの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']")をコンソールに表示し、画面上のノードを見ることができます。私がどこに間違っているのかについてのアイデアはありますか?

ありがとう、デニス

受け入れられた回答

以下のようなソースの非常にぞんざいな検査から、それは見えますInsertAfter望んでrefChildあなたが呼び出しノードの直接の子であることをInsertAfterに。あなたのdivノードの子孫軸( // )全体を検索しているので、 refChildとして渡す実際のノードはHtmlWrapper 直接の子ではない可能性があります。

HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']")を変数にInsertAfter 、そのParentNodeを呼び出してInsertAfterParentNode



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ