RSS已經非常流行了,幾乎所有有點名氣的和沒名氣的網(wǎng)站都有提供RSS服務。
本文詳細教你什么是RSS,如是在.Net中使用RSS。
1.那么什么是RSS呢?
RSS是一種消息來源格式規(guī)范,用以發(fā)布經常更新資料的網(wǎng)站,例如博客、新聞的網(wǎng)摘。RSS文件,又稱作摘要、網(wǎng)摘、更新、頻道等,包含了全文或節(jié)選文字,再加上一定的屬性數(shù)據(jù)。RSS讓發(fā)布者自動發(fā)布信息,也使讀者能夠聚合和定期更新不同網(wǎng)站的網(wǎng)摘。RSS可以通過以網(wǎng)頁或桌面為架構的軟件來閱讀,即RSS閱讀器、新聞聚合器等,并進行定期更新檢查、自動下載。詳細介紹見RSS簡介
2.RSS的格式是怎樣的呢?
RSS目前主要有兩種標準格式:RSS2.0 、Atom1.0
3.如何制作RSS,如何解析RSS呢?
在.NET4/3.5下,MS集成了RSS對象。讓RSS的解析和創(chuàng)建變得如此簡單。
先引用System.ServiceModel
 
 
代碼里面:
using System.ServiceModel.Syndication;
解析RSS和Atom的方法如下:
| 
protectedvoidShowRSS(stringrssURI)
 {
 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 insf.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格式。傳入?yún)?shù)是一個rss的xml文件路徑或者網(wǎng)址。
調用ShowRSS方法示例1(解析Atom):
| 
ShowRSS(Application.StartupPath + "\\cnblogs.xml");
 
 
 | 
   
  
調用ShowRSS方法示例2(解析RSS2.0):
| 
ShowRSS(Application.StartupPath + "\\cyb.xml");
 | 
   
  
解釋:可以拿真實網(wǎng)址測試,上面兩個網(wǎng)址分別是RSS2.0格式和Atom格式。
生成RSS2.0的方法:
| 
SyndicationFeed feed = newSyndicationFeed("博客園_DotNet筆記",
 "興趣是最好的老師。", 
 "FeedID,如:uuid:0913a2a5-6900-42a0-a3ab-2ba6a1706b03;id=10373", 
 DateTime.Now);
 List<SyndicationItem> items = newList<SyndicationItem>();
 SyndicationItem item1 = newSyndicationItem();
 item1.Title = newTextSyndicationContent("博客標題,如:解析和生成RSS或Atom");
 item1.Content = SyndicationContent.CreatePlaintextContent("正文:本文講述如何在.Net中實現(xiàn)Rss和Atom的生成和解析……");
 item1.Summary = SyndicationContent.CreatePlaintextContent("摘要:本文講述如何在.Net中實現(xiàn)Rss和Atom的生成和解析");
 item1.PublishDate = DateTime.Now;
 items.Add(item1);
 SyndicationItem item2 = newSyndicationItem();
 item2.Title = newTextSyndicationContent("博客標題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,前面創(chuàng)建SyndicationFeed的過程是一樣的。
程序界面如下:

程序下載: Demo Code