البرمجة

تحويل XML إلى كائن C# باستخدام فئات التسلسل وإرشادات مفيدة

في مهمة تحول البيانات من تنسيق XML إلى كائن C# قابل للتفسير، يتطلب الأمر إنشاء فئة تعكس هيكل البيانات في الـXML الخاص بك ومن ثم استخدام عملية فك تشفير (Deserialization) لتحويل البيانات من XML إلى كائن C#.

لنقم بذلك، يمكنك إنشاء فئة FundingSource التي تحتوي على خصائص تعكس العناصر الموجودة في XML. يجب أن تكون هذه الفئة مزودة بتعليمات برمجية تساعد في فك تشفير XML. إليك فئة محتملة تعكس هيكل XML الخاص بك:

csharp
using System; using System.Xml.Serialization; using System.Collections.Generic; [XmlRoot("FundingSource")] public class FundingSource { [XmlElement("ClientAccountPaySourceId")] public int ClientAccountPaySourceId { get; set; } [XmlElement("ClientAccountId")] public int ClientAccountId { get; set; } [XmlElement("ClientAccountName")] public string ClientAccountName { get; set; } // ... (تابع هذا النمط لبقية الخصائص) [XmlElement("LastChangeId")] public LastChange LastChangeId { get; set; } } public class LastChange { [XmlElement("ClientAccountPaySourceId")] public int ClientAccountPaySourceId { get; set; } [XmlElement("TimeUtc")] public DateTime TimeUtc { get; set; } [XmlElement("TimeLocal")] public DateTime TimeLocal { get; set; } // ... (تابع هذا النمط لبقية الخصائص) }

ثم، يمكنك استخدام فئة XmlSerializer المتاحة في مساحة الأسماء System.Xml.Serialization لفك تشفير الـXML إلى كائن C#. على سبيل المثال:

csharp
using System; using System.IO; using System.Xml.Serialization; class Program { static void Main() { string xmlString = // استبدل هذا بالـXML الخاص بك كنص. XmlSerializer serializer = new XmlSerializer(typeof(FundingSource)); using (StringReader reader = new StringReader(xmlString)) { FundingSource fundingSource = (FundingSource)serializer.Deserialize(reader); // الآن لديك كائن C# جاهز للاستخدام } } }

هذا هو النهج الأساسي لتحويل XML إلى كائن C#، ولكن تحتاج إلى التأكد من أن تعريف الفئة يتناسب تمامًا مع هيكل XML الخاص بك. كما يمكنك تكييف الكود بناءً على الاحتياجات الدقيقة لتطبيقك.

المزيد من المعلومات

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

أولاً، سنقوم بتعديل الفئة FundingSource لتضيف الخصائص المتعلقة بعناصر XML الإضافية:

csharp
[XmlRoot("FundingSource")] public class FundingSource { [XmlElement("ClientAccountPaySourceId")] public int ClientAccountPaySourceId { get; set; } [XmlElement("ClientAccountId")] public int ClientAccountId { get; set; } [XmlElement("ClientAccountName")] public string ClientAccountName { get; set; } // ... (تابع هذا النمط لبقية الخصائص) [XmlElement("LastChangeId")] public LastChange LastChangeId { get; set; } // إضافة خصائص إضافية [XmlElement("DisplayOrder")] public int DisplayOrder { get; set; } [XmlElement("UseForRecurring")] public bool UseForRecurring { get; set; } [XmlElement("UseForNonRecurring")] public bool UseForNonRecurring { get; set; } [XmlElement("IsActive")] public bool IsActive { get; set; } [XmlElement("Invalid")] public bool Invalid { get; set; } [XmlElement("ChargeAccountToken")] public string ChargeAccountToken { get; set; } [XmlElement("IsExternal")] public bool IsExternal { get; set; } } // إضافة فئة إضافية لتمثيل عنصر LastChangeId public class LastChange { [XmlElement("ClientAccountPaySourceId")] public int ClientAccountPaySourceId { get; set; } [XmlElement("TimeUtc")] public DateTime TimeUtc { get; set; } [XmlElement("TimeLocal")] public DateTime TimeLocal { get; set; } // ... (تابع هذا النمط لبقية الخصائص) }

ثم يمكنك استخدام الكود التالي لتحويل الـXML إلى كائن C#:

csharp
using System; using System.IO; using System.Xml.Serialization; class Program { static void Main() { string xmlString = // استبدل هذا بالـXML الخاص بك كنص. XmlSerializer serializer = new XmlSerializer(typeof(FundingSource)); using (StringReader reader = new StringReader(xmlString)) { FundingSource fundingSource = (FundingSource)serializer.Deserialize(reader); // الآن لديك كائن C# جاهز للاستخدام Console.WriteLine($"ClientAccountName: {fundingSource.ClientAccountName}"); Console.WriteLine($"TenderTypeName: {fundingSource.TenderTypeName}"); // ... (استمر في طباعة الخصائص الأخرى) // يمكنك أيضًا الوصول إلى خصائص LastChangeId Console.WriteLine($"Last Change ID Time UTC: {fundingSource.LastChangeId.TimeUtc}"); } } }

يجب عليك تعديل الطباعة والوصول إلى الخصائص بحسب احتياجات تطبيقك الفعلي. هذا الكود يعتمد على الفرضية أن الـXML الذي تقدمه هو لفئة FundingSource مع عنصر LastChangeId داخله.

زر الذهاب إلى الأعلى