سؤال

أنا تحليل استجابة XML API مع HTMLAGIMEPACK. أنا قادر على تحديد العناصر النتيجة من مكالمة API. ثم أحبط من خلال العناصر وأريد كتابة الأطفال إلى طاولة. عندما أختار الأطفال الأطفال بقول شيء مثل:

sItemId = dnItem.ChildNodes(0).innertext

أحصل على النتيجة المختصة المناسبة. ولكن عندما أحاول:

sItemId = dnItem.ChildNodes("itemId").innertext

أحصل على "الكائن المشار إليه لديه قيمة" لا شيء ".

لقد حاولت "Itemid [1]، "/ Itemid [1] وعقد سلاسل. لقد حاولت تحديد selectsinglenode و childnodes.item ("ItemID"). Innertext. الوحيد الوحيد الذي عمل يستخدم الفهرس.

المشكلة في استخدام الفهرس هو أنه يتم حذف العناصر الطفيلة في بعض الأحيان في النتائج وترمي الفهرس.

أي شخص يعرف ماذا أفعل الخطأ؟

هل كانت مفيدة؟

المحلول

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(@webHTMLeditor.TextXhtml);
HtmlNodeCollection tableRows = htmlDoc.DocumentNode.SelectNodes("//tr");
for (int i = 0; i < tableRows.Count; i++)
{
    HtmlNode tr = tableRows[i];

    HtmlNode[] td = new HtmlNode[2];
    string xpath = tr.XPath + "//td";
    HtmlNodeCollection cellRows = tr.SelectNodes(@xpath);
    //td[0] = tr.ChildNodes[1];                
    //td[1] = tr.ChildNodes[3];
    try
    {
        td[0] = cellRows[0];
        td[1] = cellRows[1];
    }
    catch (Exception)
    { }
    //etc   
}

يتم استخدام الرمز لاستخراج البيانات من جدول، صف حسب الصف، حسب الخلية لكل صف. استخدمت XPath الحالية وأغيرها إلى احتياجاتي. حظ سعيد!

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