在星期五的这个阶段真的很头疼!我正在尝试使用insertafter()将htmlnode添加到另一个。当我将refchild节点rpint到控制台时,我可以看到其id为breadcrumbs,但仍会出现以下错误:
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
。
关于c# - 我应该如何使用HTMLAgilityPack AppendNode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2118404/