إنشاء تلقيم الويب ATOM في الـ ASP.NET بإستخدام الـ XmlSerializer

08 ديسمبر 2016     427 مشاهدة    0 تعليق
تم النشر في #Atom  #Serialization  #ASP.NET 

الـ Atom هي صيغة بيانات مبنيه على الـ Xml, وتعد إحدى تقليمات الويب والتي بدورها تعتبر وسيلة لنشر المحتوى المتجدد على الويب.

تفيد التلقيمات في إعلام من يتابعونها بتحديث المواقع التي توفر التلقيمات، مما يسمح بمتابعة عدد ضخم من المواقع الإخبارية والمدونات دون الحاجة لزيارة المواقع كلها لمعرفة الجديد فيها.

وهنالك نوعاّ آخر من أنواع تلقيمات الويب ألا وهو الآر إس إس RSS وقد تطرقت سابقاً في إحدى المقالات عن كيفية انشاء RSS بسهوله بإستخدام الـ XML Literals و الـ LINQ في الفيجوال بيسك.

فمحور شرحنا اليوم عن توضيح كيفية توليد الـ Atom في تقنية الـ ASP.NET بإستخدام الـ XmlSerializer, طبعاً لن أتحدث عن موضوع الـ Serialization لأنني قد تطرقت له سابقاً فأرجو الرجوع للمقالة الـ Serialization في الدوت نت.

لنلقي نظره على المحتوى التالي:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Example Feed</title>
  <link href="http://example.org/"/>
  <updated>2003-12-13T18:30:02Z</updated>
  <author>
    <name>John Doe</name>
  </author>
  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>

  <entry>
    <title>Atom-Powered Robots Run Amok</title>
    <link href="http://example.org/2003/12/13/atom03"/>
    <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
    <updated>2003-12-13T18:30:02Z</updated>
    <summary>Some text.</summary>
  </entry>

</feed>

نلاحظ من المحتوى أعلاهه أن صيغة الـ Atom مشابهه نوعاً ما لصيغة الـ RSS, طبعاً في تطبيقنا اليوم سنركز على العناصر الأساسية التي يجب ذكرها في الملف, لذا يمكنك الرجوع للرابط التالي لمزيد من التفاصيل.

سنقوم الآن بإنشاء الفئتين Feed و Entry على النحو التالي:

[XmlRoot("feed")]
public class Feed
{
    [XmlAttribute]
    public string Version { get; } = "1.0";

    [XmlElement("title")]
    public string Title { get; set; }

    [XmlElement("updated")]
    public string Updated { get; set; }

    [XmlElement("id")]
    public string Id { get; set; }

    [XmlElement("entry")]
    public List<Entry> Entries { get; set; } = new List<Entry>();
}
[XmlRoot("entry")]
public class Entry
{
    [XmlElement("title")]
    public string Title { get; set; }

    [XmlElement("id")]
    public string Id { get; set; }

    [XmlElement("updated")]
    public string Updated { get; set; }
}

للمعلومية تم إستخدام الخاصية XmlElement لإخبار الـ XmlSerializer بأن الخاصيه ماهي إلا عبارة عن عنصر في ملف الـ Xml الذي سيتم توليده.

ببساطه ما قمنا بعمله ماهو إلا عمل كائنات تحتوي على الـ metadata الأساسية لكل فئه في ملف الـ Atom, والآن كل ما علينا إلا إستخدام الـ XmlSerializer لكتابتها في الـ Response الخاص بالصفحه المراد عرض التلقيم فيها.

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ContentType = "text/xml;charset=utf-8";

        Feed feed = new Feed
        {
            Title = "Example feed",
            Updated = DateTime.UtcNow.ToString("s") + "Z",
            Id = "http://example.com/"
        };

        for (int i = 1; i <= 5; i++)
        {
            var entry = new Entry
            {
                Title = "Eample Title " + i,
                Id = "http://example.com/blog/" + i,
                Updated = DateTime.Now.ToString("s") + "Z"
            };
            feed.Entries.Add(entry);
        }

        XmlSerializer serializer = new XmlSerializer(typeof(Feed));
        serializer.Serialize(Response.OutputStream, feed);
    }

في الأخير تم تحويل الكائن من النوع Feed إلى Xml بإستخدام الـ XmlSerializer وذلك عن طريق الطريقة Serialize, ليتم بعدها كتابتها في الـ OutputStream للـ Response الخاص بالصفحة المراد عرض التلقيم فيها.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك