用C#實現RSS的生成和解析,支持RSS2.0和Atom格式

原文: 用C#實現RSS的生成和解析,支持RSS2.0和Atom格式

RSS已經很是流行了,幾乎全部有點名氣的和沒名氣的網站都有提供RSS服務。html

本文詳細教你什麼是RSS,如是在.Net中使用RSS。架構

1.那麼什麼是RSS呢?post

RSS是一種消息來源格式規範,用以發佈常常更新資料的網站,例如博客、新聞的網摘。RSS文件,又稱做摘要、網摘、更新、頻道等,包含了全文或節選文字,再加上必定的屬性數據。RSS讓發佈者自動發佈信息,也使讀者可以聚合和按期更新不一樣網站的網摘。RSS能夠經過以網頁或桌面爲架構的軟件來閱讀,即RSS閱讀器、新聞聚合器等,並進行按期更新檢查、自動下載。詳細介紹見RSS簡介測試

2.RSS的格式是怎樣的呢?網站

RSS目前主要有兩種標準格式:RSS2.0 、Atom1.0ui

3.如何製做RSS,如何解析RSS呢?url

在.NET4/3.5下,MS集成了RSS對象。讓RSS的解析和建立變得如此簡單。xml

先引用System.ServiceModelhtm

                       

代碼裏面:對象

using System.ServiceModel.Syndication;

 

解析RSS和Atom的方法以下:

//通用解析RSS方法
        protected void ShowRSS(string rssURI)
        {
            SyndicationFeed sf = SyndicationFeed.Load(XmlReader.Create(rssURI));

            textBox1.Text += "title:" + sf.Title.Text + "\r\n";
            if (sf.Links.Count > 0)
                textBox1.Text += "Link:" + sf.Links[0].Uri.ToString() + "\r\n";
            if (sf.Authors.Count > 0 && !string.IsNullOrEmpty(sf.Authors[0].Uri))
                textBox1.Text += "Link:" + sf.Authors[0].Uri.ToString() + "\r\n";
            textBox1.Text += "pubDate:" + sf.LastUpdatedTime.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n";

            foreach (SyndicationItem it in sf.Items)
            {
                textBox1.Text += "\r\n-----------------------------------------------------\r\n";
                textBox1.Text += "title:" + it.Title.Text + "\r\n";
                if (it.Links.Count > 0)
                    textBox1.Text += "Link:" + it.Links[0].Uri.ToString() + "\r\n";
                textBox1.Text += "PubDate:" + it.PublishDate.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n";
                if(it.Summary!=null)
                    textBox1.Text += "Summary:" + it.Summary.Text + "\r\n";
                if(it.Content!=null)
                    textBox1.Text += "Content:" + ((TextSyndicationContent)it.Content).Text + "\r\n";
                Application.DoEvents();
            }
            
        }

  

解釋:此方法可解析RSS2.0和Atom格式。傳入參數是一個rss的xml文件路徑或者網址。

 

調用ShowRSS方法示例1(解析Atom):

           //解析博客園的RSS,該RSS版本爲Atom,從http://feed.cnblogs.com/blog/u/18638/rss下載所得。
            ShowRSS(Application.StartupPath + "\\cnblogs.xml");

            //修改爲博客園RSS地址進行測試
            //ShowRSS("http://feed.cnblogs.com/blog/u/18638/rss");

  

調用ShowRSS方法示例2(解析RSS2.0):

            //解析創業邦的RSS,該RSS版本爲RSS2.0 
            ShowRSS(Application.StartupPath + "\\cyb.xml");

            //修改爲創業邦RSS地址進行測試
            //ShowRSS("http://www.cyzone.cn/rss/");

  

解釋:能夠拿真實網址測試,上面兩個網址分別是RSS2.0格式和Atom格式。

 

生成RSS2.0的方法:

//生成RSS2.0
            SyndicationFeed feed = new SyndicationFeed("博客園_DotNet筆記",
                "興趣是最好的老師。", 
                new Uri("http://cnblogs.com/tuyile006"),
                "FeedID,如:uuid:0913a2a5-6900-42a0-a3ab-2ba6a1706b03;id=10373", 
                DateTime.Now);

            List<SyndicationItem> items = new List<SyndicationItem>();

            SyndicationItem item1 = new SyndicationItem();
            item1.Title = new TextSyndicationContent("博客標題,如:解析和生成RSS或Atom");
            item1.Content = SyndicationContent.CreatePlaintextContent("正文:本文講述如何在.Net中實現Rss和Atom的生成和解析……");
            item1.Summary = SyndicationContent.CreatePlaintextContent("摘要:本文講述如何在.Net中實現Rss和Atom的生成和解析");
            item1.PublishDate = DateTime.Now;
            items.Add(item1);

            SyndicationItem item2 = new SyndicationItem();
            item2.Title = new TextSyndicationContent("博客標題2,如:.Net筆記介紹");
            item2.Content = SyndicationContent.CreatePlaintextContent("正文:興趣是最好的老師……");
            item2.Summary = SyndicationContent.CreatePlaintextContent("摘要:小y的博客.Net筆記介紹");
            item2.PublishDate = DateTime.Now;
            items.Add(item2);
            //循環添加……

            feed.Items = items;

            XmlWriter xmlWriter = XmlWriter.Create("YourRSSFile.xml");
            feed.SaveAsRss20(xmlWriter);
            xmlWriter.Close();

  

解釋:生成RSS2.0和Atom格式的xml只是最後的保存方法不一樣,一個是SaveAsRss20,一個是SaveAsAtom10,前面建立SyndicationFeed的過程是同樣的。

 

程序界面以下:

 

 

程序下載: Demo  Code

相關文章
相關標籤/搜索