عرض قنوات RSS باستخدام فيجول بايزيك دوت نيت أمر سهل. والمثال هنا يمكنك من ادخال عنوان المعلومات URL for RSS Feed ثم يقوم باسترجاع العنوان والوصف ووصلة تلك القناة كما يسترجع ويعرض قائمة بالعناصر الموجودة ضمنها. ولتبسيط الأمور تمت التجربة هنا على النسخة 2.0 من RSS
The RSSItem and RSSChannel Classes
تشكل هاتان الفئتان قلب عارض RSS
الفئة RSSItem هي فئة بسيطة جدا ولا تقدم أي طريقة Method عدا باني الفئة وهي تغلف العنوان والوصلة والوصف لعنصر الـ RSS ولها ثلاث عناصر خاصين Private Members والخصائص Properties المرتبطة بهم لتوفير الوصول إليهم ويقوم الباني بضبط كل من هذه الخصائص إلى قيمة فارغة - انظر الكود
Private m_Title As String Private m_Link As String Private m_Description As String Public Sub New() Title = "" Link = "" Description = "" End Sub
و الفئة RSSChannel هي القلب الحقيقي لعارض الـ RSS وهي تغلف خصائص العنوان والوصلة والوصف لقناة الـ RSS تماما مثل الفئة RSSItem ولكن قيمتها تأتي من تزويدها لطرق تمكنك من قراءة معلومات قناة الـ RSS
وتحتوي الفئة RSSChannel بالإضافة للعناصر الثلاث الموجودة في الفئة السابقة عنصر خاص مرتبط بخاصية لتخزين عنوان URL لقناة الـ RSS ويأخذ الباني عنوان URL يشير إلى تغذية الـ RSS كبارامتر ويضبط القيمة FeedURL بالعنوان URL المزود له وباقي القيم إلى سلسلة نصية فارغة ثم يستدعي الإجراء GetChannelInfo للحصول على المعلومات
Private m_FeedURL As String Private m_Title As String Private m_Link As String Private m_Description As String Public Sub New(ByVal url As String) FeedURL = url Title = "" Link = "" Description = "" GetChannelInfo() End Sub
GetChannelInfo Method
في الاجراء GetChannelInfo يقوم الكود بإنشاء XmlNodeList object ثم يستدعي الوظيفة GetXMLDoc ممررا سلسلة نصية على الشكل "rss/channel" وذلك كمسار عقدة وبهذا تحصل على XmlNodeList يحتوي على معلومات العنوان والوصلة و الوصف لقناة RSS بشكل XML وباستخدام القيم من XmlNodeList يمكن تحديد خصائص الفئة RSSChannel
Private Sub GetChannelInfo()
Dim rss As XmlNodeList = GetXMLDoc("rss/channel")
Title = rss(0).SelectSingleNode("title").InnerText
Link = rss(0).SelectSingleNode("link").InnerText
Description = rss(0).SelectSingleNode("description").InnerText
End SubGetXMLDoc Method
الوظيفة GetXMLDoc تأخذ مسار عقدة يحدد أي جزء من ملف XML تريد استعادته وهي تقوم في البداية بإنشاء XmlNodeList فارغ يتم تخزين العقد المعادة فيه ثم تنشئ كائن WebRequest و WebResponse لطلب البيانات من العنوان URL واستقبال الاستجابة وبعد استقبالك للإجابة تقوم بإنشاء كائن Stream لتخزين البيانات المعادة من الطريقة GetResponseStream الخاصة بالكائن WebResponse ثم تنشئ كائن XmlDocument وتحمل البيانات فيه وبهذا يصبح من السهل استعادة البيانات من وثيقة XML باستخدام الطريقة SelectedNodes وتحديد العقدة التي نريد الوصول إليها
Private Function GetXMLDoc(ByVal node As String) As XmlNodeList Dim tempNodeList As System.Xml.XmlNodeList = Nothing Dim request As WebRequest = WebRequest.Create(Me.FeedURL) Dim response As WebResponse = request.GetResponse() Dim rssStream As Stream = response.GetResponseStream() Dim rssDoc As XmlDocument = New XmlDocument() rssDoc.Load(rssStream) tempNodeList = rssDoc.SelectNodes(node) Return tempNodeList End Function
ثم تقوم باستخدام الاجراء GetXMLDoc لاستعادة المعلومات الفعلية لتغذية الـ RSS
GetChannelItems Method
الإجراء GetChannelItems يعمل بشكل مشابه للإجراء GetChannelInfo والفرق الرئيسي في هذه الحالة هو أنك الآن تعرف أنه ربما يكون هناك العديد من العناصر بحيث تقوم باستخدام حلقة For ... Each ... Loop لقراءة كل عنصر وتخزينه في مصفوفة ArrayList وبعد أن تنتهي من قراءة جميع العناصر تقوم بإعادة كائن ArrayList
Public Function GetChannelItems() As ArrayList
Dim tempArrayList As New ArrayList
Dim Dim rssItems As XmlNodeList = GetXMLDoc("rss/channel/item")
Dim Dim item As XmlNode
For Each item In rssItems
Dim newItem As New RSSItem
With newItem
.Title = item.SelectSingleNode("title").InnerText
.Link = item.SelectSingleNode("link").InnerText
.Description = item.SelectSingleNode("description").InnerText
End With
tempArrayList.Add(newItem)
Next
Return tempArrayList
End Functionوالمثال المرفق بيبن سهولة استخدام تغذية RSS في فيجول بايزيك ولكنه بحاجة للعديد من التطويرات
مترجم للفائدة


