Web 2.0时代RSS的.Net实现

发布时间:2013-09-19 11:33:46来源:阅读(1251)

         Web2.0时是以Blog,Wike,Tag,RSS等技术为代表的以个性化为中心的新一代互联网模式,RSS比起Blog等名词似乎还不算太热。但打开网页仍是遍布了RSS,Xml等醒目的图标,打开页面Mathon浏览器也是一个劲的提示有新的RSS连接,前一段一个项
      
      目需要,自己写了一个.Net下面生成RSS信息的类,如下:
      
      
       1using System;
       2using System.Xml;
       3using System.Collections;
       4using System.Globalization;
       5using System.Web;
       6
       7namespace BLRL
       8{
       9 ///
       10 /// Summary description for Rss.
       11 ///

       12 public class Rss
       13 {
       14 const string dublinCoreNamespaceUri = @"http://purl.org/dc/elements/1.1/";
       15 const string slashNamespaceUri = @"http://purl.org/rss/1.0/modules/slash/";
       16 const string syndicationNamespaceUri = @"http://purl.org/rss/1.0/modules/syndication/";
       17 //RSS频道结构
       18 struct RssChannel
       19 {
       20 public string title;//标题
       21 public string link;//连接
       22 public string language;//语言
       23 public string description;//描述
       24 public string webMaster;//发布者
       25 }
       26
       27 //RSS图片信息
       28 struct RssImage
       29 {
       30 public string url;//地址
       31 public string title;//标题
       32 public int height ;//高度
       33 public int width;//长度
       34 }
       35
       36 //RSS项结构
       37 struct RssItem
       38 {
       39 public string title;//标题
       40 public string catalog;//类别
       41 public string link;//连接
       42 public DateTime pubDate;//发布日期
       43 public string description;//描述
       44
       45 }
       46 public Rss()
       47 {
       48 //
       49 // TODO: Add constructor logic here
       50 //
       51 }
       52 ///
       53 ///添加rss版本信息
       54 ///

       55 ///
       56 ///
       57 public static XmlDocument AddRssPreamble( XmlDocument xmlDocument)
       58 {
       59 //声明创建1.0版本得xml
       60 XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "utf-8", null);
       61 xmlDocument.InsertBefore(xmlDeclaration, xmlDocument.DocumentElement);
       62
       63 XmlElement rssElement = xmlDocument.CreateElement("rss");
       64
       65 XmlAttribute rssVersionAttribute = xmlDocument.CreateAttribute("version");
       66 rssVersionAttribute.InnerText = "2.0";
       67 rssElement.Attributes.Append(rssVersionAttribute);
       68 xmlDocument.AppendChild(rssElement);
       69
       70
       71 XmlAttribute dublicCoreNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:dc");
       72 dublicCoreNamespaceUriAttribute.InnerText = dublinCoreNamespaceUri;
       73 rssElement.Attributes.Append(dublicCoreNamespaceUriAttribute);
       74
       75 XmlAttribute slashNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:slash");
       76 slashNamespaceUriAttribute.InnerText = slashNamespaceUri;
       77 rssElement.Attributes.Append(slashNamespaceUriAttribute);
       78
       79 XmlAttribute syndicationNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:sy");
       80 syndicationNamespaceUriAttribute.InnerText = syndicationNamespaceUri;
       81 rssElement.Attributes.Append(syndicationNamespaceUriAttribute);
       82
       83
       84 return xmlDocument;
       85 }
       86
       87 ///
       88 /// 添加频道
       89 ///

       90 ///
       91 ///
       92 ///
       93 private static XmlDocument AddRssChannel( XmlDocument xmlDocument, RssChannel channel)
       94 {
       95 XmlElement channelElement = xmlDocument.CreateElement("channel");
       96 XmlNode rssElement = xmlDocument.SelectSingleNode("rss");
       97
       98 rssElement.AppendChild(channelElement);
       99
      100 //添加标题
      101 XmlElement channelTitleElement = xmlDocument.CreateElement("title");
      102 channelTitleElement.InnerText = channel.title;
      103 channelElement.AppendChild(channelTitleElement);
      104
      105 //添加连接
      106 XmlElement channelLinkElement = xmlDocument.CreateElement("link");
      107 channelLinkElement.InnerText = channel.link;
      108 channelElement.AppendChild(channelLinkElement);
      109
      110 //添加描述
      111 XmlElement channelDescriptionElement = xmlDocument.CreateElement("description");
      112 XmlCDataSection cDataDescriptionSection = xmlDocument.CreateCDataSection(channel.description);
      113 channelDescriptionElement.AppendChild(cDataDescriptionSection);
      114 channelElement.AppendChild(channelDescriptionElement);
      115
      116 //添加语言
      117 XmlElement languageElement = xmlDocument.CreateElement("language");
      118 languageElement.InnerText = channel.language;
      119 channelElement.AppendChild(languageElement);
      120
      121 //添加发布者
      122 XmlElement webMasterElement = xmlDocument.CreateElement("webMaster");
      123 webMasterElement.InnerText = channel.webMaster;
      124 channelElement.AppendChild(webMasterElement);
      125
      126 return xmlDocument;
      127 }
      128
      129
      130 //添加RssImage
      131 private static XmlDocument AddRssImage(XmlDocument xmlDocument, RssImage img)
      132 {
      133 XmlElement imgElement = xmlDocument.CreateElement("image");
      134 XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel");
      135
      136 //创建标题
      137 XmlElement imageTitleElement = xmlDocument.CreateElement("title");
      138 imageTitleElement.InnerText = img.title;
      139 imgElement.AppendChild(imageTitleElement);
      140
      141 //创建地址
      142 XmlElement imageUrlElement = xmlDocument.CreateElement("url");
      143 imageUrlElement.InnerText = img.url;
      144 imgElement.AppendChild(imageUrlElement);
      145
      146 //创建高度
      147 XmlElement imageHeightElement = xmlDocument.CreateElement("height");
      148 imageHeightElement.InnerText = img.height.ToString();
      149 imgElement.AppendChild(imageHeightElement);
      150
      151 //创建长度
      152 XmlElement imageWidthElement = xmlDocument.CreateElement("width");
      153 imageWidthElement.InnerText = img.width.ToString();
      154 imgElement.AppendChild(imageWidthElement);
      155
      156 //将图像节点添加到频道节点里面
      157 channelElement.AppendChild(imgElement);
      158 return xmlDocument;
      159
      160 }
      161

关键字