• 0

كيف أحلل ملف xml، وأحدد قيمة معينة بداخله؟

داخل ملف xml على تطبيق #C، أريد بطريقة ما تحليل الملف، وجلب عنصر معين انطلاقاً من اسم العنصر:

<Premium>
        <TotalPremiumAmount>87</TotalPremiumAmount>
        <StandardPremium>87</StandardPremium>
        <OptionalPremium>0</OptionalPremium>
        <StandardTax>0</StandardTax>
        <OptionalTax>0</OptionalTax>
        <ExtendedTax>0</ExtendedTax>
        <ExtendedPremium>0</ExtendedPremium>
        <PromotionalPremium>0</PromotionalPremium>
        <FeesPremium>0</FeesPremium>
        <FeesTax>0</FeesTax>
        <StandardFeesPremium>0</StandardFeesPremium>
        <OptionalFeesPremium>0</OptionalFeesPremium>
        <Tax>0</Tax>
        <StandardPremiumDistribution>
            <Travelers>
                <Traveler>
                    <TravelerPremium>42</TravelerPremium>
                    <TravelerTax>0</TravelerTax>
                </Traveler>
                <Traveler>
                    <TravelerPremium>45</TravelerPremium>
                    <TravelerTax>0</TravelerTax>
                </Traveler>
            </Travelers>
        </StandardPremiumDistribution>
        <PackagePremiumDistribution>
            <Packages>
                <Package>
                    <PackageID>20265</PackageID>
                    <PackageName />
                    <PackageTypeID>12</PackageTypeID>
                    <Premium>87</Premium>
                    <Fees>0</Fees>
                    <Tax>0</Tax>
                    <Travelers>
                        <Traveler>
                            <TravelerID>0</TravelerID>
                            <Premium>42</Premium>
                            <Tax>0</Tax>
                        </Traveler>
                        <Traveler>
                            <TravelerID>1</TravelerID>
                            <Premium>45</Premium>
                            <Tax>0</Tax>
                        </Traveler>
                    </Travelers>
                </Package>
            </Packages>
        </PackagePremiumDistribution>
    </Premium>

أريد جلب قيمة العنصر TravelerPremium، وكانت محاولتي على هذا المنوال:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlResponse);
var premium = xmlDoc.SelectSingleNode("//TravelerPremium").InnerText;

 لكنه لا يعمل، فما الحل؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

لهذا الغرض سنستعمل وظيفة XmlDocument، بهذا الشكل:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlResponse);
var premium = xmlDoc.SelectSingleNode("//Premium[../TravelerID = '0']")

كما يمكنك استعمال حلقات التكرار foreach لتصفح العقد nodes في حال كان الملف يتكون من عدّة عقد، هكذا:

foreach(var premium in xmldoc.SelectNodes("//Premium[../TravelerID = '0']")
{
   //  TravelerID = 0 سيتصفح العقد الموجودة في حالة
}

كما يمكننا الحصول على قيمة العقدة node مباشرة مع تضمين الشرط TravelerId=0 بالطريقة التالية:

XDocument xdoc = XDocument.Load(xmlResponse);
var premium = (string)xdoc.Descendants("Traveler").Where(x => (string)x.Element("TravelerID") == "0").Element("Premium");

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن