خواندن محتوای RSS از Linq به XML

سه شنبه 7 اردیبهشت 1395

در این مقاله قصد داریم محتوای RSS ایی که ایجاد کرده ایم را به کمک Linq To XML بازیابی کرده و آنها را نمایش دهیم و نحوه استفاده از لینک برای ایجاد Rss را آموزش دهیم .

خواندن محتوای RSS از Linq به XML

در این مقاله قصد داریم که نحوه استفاده از لینک برای ایجاد Rss را آموزش دهیم .در مرحله اول لازم است که لینک RSS را داشته باشیم .همان طور که در شکل زیر می بینید با کلیک بر روی لینک RSS می توانیم آدرس آن را به دست آوریم .

آدرس برابر با http://www.c-sharpcorner.com/RSS/TopArticles.aspx است .

در مرحله دوم یک برنامه Asp.net ساده در ویژوال استودیو ایجاد می کنیم .

در مرحله سوم و در پنجره بعدی نوع برنامه را ASP.NET Empty Web Site در نظر می گیریم .

در مرحله چهارم کنترل های مورد نیاز را به صفحه اضافه می کنیم .کدهای صفحه UI به شکل زیر خواهد بود

    <!DOCTYPE html>  
      
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title></title>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
            <div>  
                <strong>RSS Feed:</strong><br />  
                <asp:TextBox ID="txtrss" runat="server" TextMode="Url" Width="500px" placeholder="Enter RSS URL"></asp:TextBox>  
                <br />  
                <br />  
                <asp:Button ID="btngetrss" runat="server" Text="Get RSS Feed" OnClick="btngetrss_Click" />  
            </div>  
      
        </form>  
    </body>  
    </html>  

اگر برنامه را اجرا کنیم شکل زیر را خواهید دید

در ادامه و در مرحله پنجم یک کلاسی با فیلد ها و پراپرتی های زیر اضافه می کنیم .

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
      
    public class RssNews  
    {  
        public string tit   
      {  
            get;  
            set;  
        }  
        public string desc  
        {  
            get;  
            set;  
        }  
        public string auth  
        {  
            get;  
            set;  
        }  
        public string contentlink  
        {  
            get;  
            set;  
        }  
        public string date   
        {  
            get;  
            set;  
        }  
      
      
    }  

در مرحله ششم فضاهای نام مورد نیاز را به برنامه اضافه کنید

using System.Xml;  
using System.Xml.Linq;  

در قسمت code behind و در رویداد مربوط به کلیک دکمه کدهای زیر را اضافه می کنیم .

    protected void btngetrss_Click(object sender, EventArgs e)  
       {  
      
           var posts = GetFeeds(txtrss.Text);  
           StringBuilder sb = new StringBuilder();  
           sb.Append("<p style='font-weight:larger'><b>C# Corner Latest Content Fetch From RSS by Aqib Shehzad</b></p>");  
           foreach (var item in posts)  
           {  
                
               sb.Append("<b>Title: </b>" + item.tit);  
               sb.Append("<br />");  
               sb.Append("<b>Description: </b>" + item.desc);  
               sb.Append("<br />");  
               sb.Append("<b>Article Link: </b><a target='_blank' href='" + item.contentlink + "'>" +item.contentlink+"</a>");  
               sb.Append("<br />");  
               sb.Append("<b>Published Date: </b>" + item.date);  
               sb.Append("<br />");  
               sb.Append("<b>Author: </b>" + item.auth);  
               sb.Append("<br />");  
               sb.Append("------------------------------------------------------------------------------------------------------------");  
               sb.Append("<br />");  
      
           }  
           HttpContext.Current.Response.Write(sb);  
       }  

متد خواندن فیدهای Rss از URL به صورت زیر است

    public static IEnumerable<RssNews> GetFeeds(string url)  
        {  
            XDocument rssfeedxml;  
            XNamespace namespaceName = "http://www.w3.org/2005/Atom";  
            rssfeedxml = XDocument.Load(url);  
      
      
            StringBuilder rssContent = new StringBuilder();  
      
            var list = (from descendant in rssfeedxml.Descendants("item")  
      
                        //Response.Write(list);  
                        select new RssNews  
                        {  
                            tit = descendant.Element("title").Value,  
                            desc = descendant.Element("description").Value,  
                            contentlink = descendant.Element("link").Value,  
                            date = descendant.Element("pubDate").Value,  
                            auth = descendant.Element("author").Value  
      
                        });  
            return list.ToList();  
        }  

بعد از معرفی یک نمونه جدید از کلاس XDocument می توانیم فضای نام فیدهای Rss را به برنامه معرفی کنیم .

    XNamespace namespaceName = "http://www.w3.org/2005/Atom";    

حال برای ایجاد XDocument باید این url را لود کنیم .

XDocument.Load(url); 

بعد از خواندن فیدها یک المنتی که دیتا را در خود نگه داری کند معرفی می کنیم

var list = (from descendant in rssfeedxml.Descendants("item")   

نهایتا اگر آدرس را به درستی وارد کنید و دکمه را بزنید خروجی زیر را خواهید دید

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید