生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Web 2.0时代RSS的.Net实现,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
【 tulaoshi.com - Web开发 】
Web2.0时是以Blog,Wike,Tag,RSS等技术为代表的以个性化为中心的新一代互联网模式,RSS比起Blog等名词似乎还不算太热。但打开网页仍是遍布了RSS,Xml等醒目的图标,打开页面Mathon浏览器也是一个劲的提示有新的RSS连接,前一段一个项
目需要,自己写了一个.Net下面生成RSS信息的类,如下:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)  
    1using System;
    2using System.Xml;
    3using System.Collections;
    4using System.Globalization;
    5using System.Web;
    6
    7namespace BLRL
    8{
    9    /// summary
   10    /// Summary description for Rss.
   11    /// /summary
   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        /// summary
   53        ///添加rss版本信息
   54        /// /summary
   55        /// param name="xmlDocument"/param
   56        /// returns/returns
   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        /// summary
   88        /// 添加频道
   89        /// /summary
   90        /// param name="xmlDocument"/param
   91        /// param name="channel"/param
   92        /// returns/returns
   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
  162
  163        /// summary
  164        /// 添加项信息
  165        /// /summary
  166        /// param name="xmlDocument"/param
  167        /// param name="item"/param
  168        /// returns/returns
  169        private static XmlDocument AddRssItem (XmlDocument xmlDocument, RssItem item) 
  170        {
  171            XmlElement itemElement = xmlDocument.CreateElement("item");
  172            XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel");
  173
  174            //创建标题
  175            XmlElement itemTitleElement = xmlDocument.CreateElement("title");            
  176            XmlCDataSection cDataTitleSection = xmlDocument.CreateCDataSection(item.title);
  177            itemTitleElement.AppendChild(cDataTitleSection);            
  178            itemElement.AppendChild(itemTitleElement);
  179
  180            //创建日期
  181            XmlElement pubDateElement = xmlDocument.CreateElement("pubDate");
  182            pubDateElement.InnerText = XmlConvert.ToString(item.pubDate.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ss");
  183            itemElement.AppendChild(pubDateElement);
  184            
  185            //添加连接
  186            XmlElement itemLinkElement = xmlDocument.CreateElement("link");
  187            itemLinkElement.InnerText = item.link;
  188            itemElement.AppendChild(itemLinkElement);
  189
  190            //创建描述
  191            XmlElement itemDescriptionElement = xmlDocument.CreateElement("description");
  192            XmlCDataSection cDataDescriptionSection = xmlDocument.CreateCDataSection(item.description);            
  193            itemDescriptionElement.AppendChild(cDataDescriptionSection);
  194            itemElement.AppendChild(itemDescriptionElement);
  195
  196
  197            //创建类型
  198            XmlElement itemcatalogElement = xmlDocument.CreateElement("catalog");
  199            itemcatalogElement.InnerText = item.catalog;
  200            itemElement.AppendChild(itemcatalogElement);
  201
  202            //将RssItem添加到频道节点里面
  203            channelElement.AppendChild(itemElement);
  204
  205            return xmlDocument;
  206        }
  207   }
  208}
  根据特定的需要,可以先将数据读取到列表里面,然后遍历列表,调用上述方法,生成Xml字符串。
  这个字符串就是RS用到XML字符串了。也可以入aspx文件,然后用 link type="application/rss+xml" rel="alternate" href="rssfeed.aspx"调用下RSS文件,马桶等软件就会自动提示有RRS信息了
http://jillzhang.cnblogs.com/archive/2006/06/11/423086.html
来源:http://www.tulaoshi.com/n/20160219/1609690.html
看过《Web 2.0时代RSS的.Net实现》的人还看了以下文章 更多>>