كيف يمكنني استخدام htmlagilitypack appendNode؟
-
22-09-2019 - |
سؤال
حصلت على صداع حقيقي في هذه المرحلة يوم الجمعة! أحاول إضافة htmlnode إلى آخر باستخدام insertafter (). أستطيع أن أرى عقدة 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
.