HTMLAgilityPack AppendNode는 어떻게 사용해야합니까?

c# html-agility-pack screen-scraping

문제

금요일이 단계에서 진짜 두통을 겪었습니다! InsertAfter ()를 사용하여 다른 HtmlNode 추가하려면 노력하고있어. breadcrumbs의 ID를 가진 refChild 노드를 볼 수 있는데 콘솔에 rpint하지만 다음 오류가 계속 발생합니다.

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

내 코드는 다음과 같습니다.

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와 HtmlWrapper.SelectSingleNode ( "// div [@ id = 'breadcrumb']")를 콘솔에 출력하고 화면상의 노드를 볼 수 있습니다. 내가 여기서 잘못 가고있는 어떤 생각?

고마워, 데니스

수락 된 답변

소스에 대한 매우 복잡한 검사에서 InsertAfterrefChildInsertAfter 를 호출 한 노드의 직접적인 자식이라고 생각합니다. 당신이 div 노드에 대해 // 자손 축 전체를 검색하고 있기 때문에 refChild 로 전달한 실제 노드가 HtmlWrapper직접적인 자식HtmlWrapper 있습니다.

HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']") 를 변수로 가져 와서 ParentNode InsertAfter 를 호출하십시오.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.