سؤال

حصلت على صداع حقيقي في هذه المرحلة يوم الجمعة! أحاول إضافة 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top