الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بناء برنامج عارض RSS

مغلق
بدأه محمد سامر أبو سلو في 6 يناير 2007 · 7 رد · 1,357 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عرض قنوات 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 Sub

GetXMLDoc 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 في فيجول بايزيك ولكنه بحاجة للعديد من التطويرات

مترجم للفائدة

RSSViewer.zip

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

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

مشكور ولكن هل من نبذة عن قنوات RSS

Linux System Admin

#3

باختصار قنوات RSS هي معلومات متنوعة يوفرها الموقع بصيغة XML يمكن تتبعها من خلال برامج تدعم هذه الخاصية مثل Outlook 2007 وللحصول على مثال عن قنوات RSS يوجد زر باللون البرتقالي أسفل صفحة المنتدى اضغط عليه

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

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5
programmer4fun كتب:
الأمر أسهل من هذا بكثير إذا إستخدمت wpf

لماذا لاتطرح موضوعا تشرح فيه الطريقة المذكورة وبذلك تفيد الجميع

ثم أن الطريقة المذكورة هنا بسيطة ولا أرى فيها ذلك التعقيد

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

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

تصدق اني كنت افكر فيها من قبل يومين لجلب بييانات معروضه عن طريق RSS الى التطبيق

وسبحان الله وجت موضوعك هنا

مشكور اخي الكريم

تم تعديل هذه المشاركة بواسطة طاااير في 7 يناير 2007 في 22:26

#7

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

1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .

2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .

-------------------------------------------------------

درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005

درس في الإجراءات الفرعية ( العامة )

درس في ADO.NET من الصفر إلى الإحتراف .

#8

3ea9cf1ab9.gif

2ac9a1b3d7.jpg

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…