RSS



خواندن فيد هاي Rss2 و نمايش آنها در Asp.net

RSS چيست ؟

RSS به قولی سرنام REALLY SIMPLE SYNDICATION و به قول كمی حرفه‌ای‌ترها سرنام RDF SITE SUMMARY است. ولی RSS سرنام هر چه باشد، پدیده‌ای است كه امكان جمع‌آوری اطلاعات و اخبار را از سایت‌های مختلف فراهم می‌كند بدون این كه مجبور باشید از این سایت به آن سایت سر بزنید. ویژگی RSS هم مثل بقیه تكنولوژی‌های خوب، در سادگی آن است :یک فرمت سریع و استاندارد، شبیه همان بولتن‌های خبری است منتها به شكل الكترونیك. امروزه اكثر سایت‌های وب مهم به این بولتن‌ها مجهز هستند، از وبلاگ‌های شخصی گرفته تا سایت‌های خبرگزاری‌های بزرگ دنیا. برای گرفتن این بولتن‌ها كافی است نرم‌افزار مناسب این كار را در اختیار داشته باشید و بولتن مورد نظر را مشترك شوید. شاید فكر كنید خواندن خبرها كه كاری ندارد، به صفحه اصلی سایت می‌رویم و خبرها را می‌خوانیم. اما حالتی را در نظر بگیرید كه بخواهید 50 سایت مختلف را ببینید و تازه معلوم نیست این سایت‌ها اصلاً خبر جدیدی داشته باشند یا نه. با RSS نیازی نیست به 50 تا سایت سر بزنید. كامپیوتر شما به طور خودكار و با زمان‌بندی مشخص با این سایت‌ها تماس می‌گیرد و جدیدترین خبرها و اطلاعات را دانلود می‌كند. بنابراین، فقط از یك پنجره می‌توانید تمام اتفاقات روز را مشاهده كنید. بدین ترتیب هم در وقت‌تان صرفه‌جویی كرده‌اید، و هم در این همه اطلاعات اضافی كه در وب وجود دارد گرفتار نشده‌اید.


در اينجا قصد داريم با استفاده از يك متد ساده اطلاعات  RSS يك سايت را خوانده و در يم صفحه Asp.net نمايش دهيم . كد هاي به زبان سي شارپ ميباشد .


 

براي خواندن اطلاعات از RSS ابتدا يك كلاس ساخته و سپس يك متد و چند مشخصه به صورت زير براي كلاس تعريف كرده .

  

 
 
01.private string feedname;
 
02.private string rssurl;
 
03.private int countitem;
 
04.public string Rssurl
 
05.{
06.get { return rssurl; }
 
07.set { rssurl = value; }
 
08.}
 
09.public string Feedname
 
10.{
 
11.get { return feedname; }
 
12.set { feedname = value; }
 
13.}
 
14.public int Countitem
 
15.{
 
16.get { return countitem; }
 
17.set { countitem = value; }
 
18.}
 

تعريف مشخصه هاي كلاس :
Rssurl = آدرس Rss2 سايت مورد نظر را دريافت ميكند .
Feedname = نام سايت مورد نظر را دريافت ميكند .
Countitem = تعداد مطالبي را كه بايد در صفحه نمايش داده شود مشخص ميكند  .

سپس كلاس ما حاوي يك متد است براي انجام عمليات خواندن فيد . نام كلاس را ProcessRSS قرار ميدهيم و اطلاعات را در قالب يك رشته برگشت ميدهيم .

01.public string ProcessRSS()
 
02.{
 
03.if (string.IsNullOrEmpty(Rssurl))
 
04.{
 
05.throw new NotAddressRssException();
 
06.}
 
07.WebRequest request = WebRequest.Create(Rssurl);
 
08.WebResponse response = request.GetResponse();
 
09.StringBuilder sb = new StringBuilder(string.Empty);
 
10.Stream rssStream = response.GetResponseStream();
 
11.XmlDocument rssDoc = new XmlDocument();
 
12.rssDoc.Load(rssStream);
 
13.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");
 
14.string title = "";
 
15.string link = "";
 
16.int upperlimit = rssItems.Count;
 
17.if (upperlimit > Countitem)
 
18.upperlimit = Countitem;
 
19.if (upperlimit > 0)
 
20.{
21.sb.Append("

" + Feedname + "

");
 
22.for (int i = 0; i < upperlimit; i++)
 
23.{
 
24.XmlNode rssDetail;
 
25.rssDetail = rssItems.Item(i).SelectSingleNode("title");
 
26.if (rssDetail != null)
 
27.{
 
28.title = rssDetail.InnerText;
 
29.}
 
30.else
 
31.{
 
32.title = "";
 
33.}
 
34.rssDetail = rssItems.Item(i).SelectSingleNode("link");
 
35.if (rssDetail != null)
 
36.{
 
37.link = rssDetail.InnerText;
 
38.}
 
39.else
 
40.{
 
41.link = "";
 
42.}
43.sb.Append("
 
");
 
44.}
 
45.sb.Append("");
 
46.}
 
47.return sb.ToString().Trim();
 
48.}
 
49.}
 

نحوه كار متد به صورت زير است :
در ابتدا بررسي ميشود كه آيا كاربر آدرس فيد را وارد كرده است يا خير ، اگر كاربر آدرس را وارد نكرده باشد يك Exception پرتاب خواهد شد . (اين Exception به صورت كلاس تعريف شده است كه در آخر مقاله بررسي ميشود . )
در مرحله بعدي با استفاده از شئ WebRequest  درخواست براي گرفتن اطلاعات به آدرس فيد ارسال ميشود . با شئ WebResponse  اطلاعات دريافت ميشود .
در مرحله بعدي يك  Stream  ساخته شده و اطلاعات به صورت Stream  دريافت ميشودند .
ساختار فايل  RSS به صورت يك فايل XML ميباشد و ما بايد با اين اطلاعات به وسيله كتابخانه هاي كار با XML كار كنيم . به اين منظور يك شئ XmlDocument  براي كار با اطلاعات كه در قالب XML ميباشد ايجاد ميشود .
سپس اطلاعات داخل شئ XmlDocument   قرار ميگيرند .
يك شئ XmlNodeList  براي كار با اعضاي فايل XML ساخته ميشود و نام آن را rssItems  قرار ميدهيم .
اطلاعات هر مطلب در RSS داخل تگ item قرار ميگيرد كه خود تگ item داخل تگ channel قرار دارد و تگ channel داخل تگ rss . پس براي دسترسي به تگ item  به اين  صورت آدرس دهي ميكنيم. rss/channel/item  به اين صورت اطلاعات item داخل rssItems   قرار ميگيرد .
لازم به ذكر است كه اطلاعات مطلب RSS داخل تگ هاي مختلف در item قرار ميگيرد . مثلاً داخل تگ title عنوان مطلب قرار ميگيرد و داخل تگ link لينك مطلب در سايت اصلي قرار دارد .
براي مشاهده تگ هاي كامل item به اين صفحه مراجعه كنيد .
در مرحله بعد تعداد مطالبي كه بايد استخراج شود با توجه به تنظيم كاربر صورت ميگيرد . و سپس داخب متغير upperlimit  قرار ميگيرد .
سپس اطلاعات به حلقه For دريافت شده و نمايش داده ميشود .
همان طور كه گفته شد ما در اينجا فقط از تگ هاي title و link استفاده كرديم . شما با در نظر گرفتن نياز خود ميتوانيد از تگ هاي بيشتري استفاده كنيد .
در مرحله بعد اطلاعات به دست آمده از هر item به sb كه يك StringBuilder ميباشد اضافه ميشود .
سپس كل اطلاعات sb برگشت داده ميشود .

كلاس NotAddressRssException كه از Exception مشتق شده است . در صورتي كه آدرس RSS خالي باشد پرتاب ميشود .
 
 
01.public class NotAddressRssException : Exception
 
02.{
 
03.private DateTime dateTimeError;
 
04.public DateTime DateTimeError
 
05.{
 
06.get { return dateTimeError; }
 
07.set { dateTimeError = value; }
 
08.}
 
09.public NotAddressRssException()
 
10.: base(&quot;آدرس فيد را وارد كنيد&quot;)
 
11.{
 
12.dateTimeError = DateTime.Now;
 
13.}
 
14.}
 
  اين كلاس حاوي يك مشخصه است كه تاريخ و ساعت رخ دادن خطا را گزارش ميدهد .

براي استفاده از اين كلاس به صورت زير عمل ميكنيم  .
ابتدا در صفحه يك كنترل Literal قرار ميدهيم . سپس كد زير را در رويداد Load صفحه مينويسم .

 
 
01.protected void Page_Load(object sender, EventArgs e)
 
02.{
 
03.try
 
04.{
 
05.RssReader feed = new RssReader();
 
06.feed.Feedname = &quot;.: Mehrdad Ghasemi Official WebSite :.&quot;;
 
07.feed.Rssurl = &quot;http://www.mehrdadg.ir/rss2.aspx&quot;;
 
08.feed.Countitem = 10;
 
09.this.Literal1.Text = feed.ProcessRSS();
 
10.}
 
11.catch (NotAddressRssException ex)
 
12.{
 
13.this.Literal1.Text = ex.Message.ToString()+ &quot;
 
14.&quot;+ ex.DateTimeError.ToString();
 
15.}
 
16.catch (Exception ex)
 
17.{
 
18.this.Literal1.Text = ex.Message.ToString();
 
19.}
20.}


همان طوركه ميبينيد ، ابتدا يك شئ از كلاس RssReader  ايجاد ميكنيم . سپس مشخصه هاي اين كلاس را مشخص ميكنيم . سپس متد ProcessRSS را فراخاني ميكنيم و نتيجه را مشاهده ميكنيم .

تاريخ : سه_شنبه 7 مهر 1388   ساعت : 6:20:25 PM    نويسنده : مدیریت ( سید جواد حامی ) | نظرات




منوي اصلي

معرفی تصویری شرکت  


آموزش پروژه ای C#.Net



شرکت ساینا مبتکر شیوه نوین آموزش تحت پروژه برگزار می کند

C#,ASP.Net,ADO.Net,SQL Server
66494685-66405702 : تلفن

لینک روزانه


 اولین وسایل الکترونیکی ساخته شده در دنیا (555)
 Dropbox با ۲۵ میلیون کاربر و دویست میلیون اشتراک فایل روزانه (756)
 امکان جدید گوگل : استفاده از تصاویر اختصاصی در ساخت تم جی میل (697)
 مجموعه طراحی های استاد مرتضی کاتوزیان (1036)
 خلاقیت در طراحی سی دی (1089)
  آشنایی با ۲۲ برنامه ضروری تحت ویندوز برای طراحان وب  (1482)
 آموزش دکمه های جهانی برای وب سایت شما در فتوشاپ  (1300)
 ارسال فایل بدون اینترنت  (1188)
 25 ترفند حرفه ای فتوشاپ (1138)
 چت رایگان با ایرانسل (1429)
  ادامه آرشيو لينك روزانه «

پربازدیدترین مطالب


آرشیو موضوعی


آرشیو ماهانه


لینک دوستان

     CodeProject
     CoderSource
     w3schools
     مرجع برنامه نویسی AVR


جستجو در سایت