Web 2.0时代RSS的.Net实现

不懂事孩童

不懂事孩童

2016-02-19 15:27

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Web 2.0时代RSS的.Net实现,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

  Web2.0时是以Blog,Wike,Tag,RSS等技术为代表的以个性化为中心的新一代互联网模式,RSS比起Blog等名词似乎还不算太热。但打开网页仍是遍布了RSS,Xml等醒目的图标,打开页面Mathon浏览器也是一个劲的提示有新的RSS连接,前一段一个项

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  目需要,自己写了一个.Net下面生成RSS信息的类,如下:

  
    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://m.tulaoshi.com/webkaifa/)

  http://jillzhang.cnblogs.com/archive/2006/06/11/423086.html

展开更多 50%)
分享

猜你喜欢

Web 2.0时代RSS的.Net实现

Web开发
Web 2.0时代RSS的.Net实现

Web2.0时代的核心应用:Ajax简介

Web开发
Web2.0时代的核心应用:Ajax简介

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

小试Web 2.0时代的通讯工具Lava-Lava

聊天软件
小试Web 2.0时代的通讯工具Lava-Lava

AJAX将成为移动Web2.0时代首选开发平台

Web开发
AJAX将成为移动Web2.0时代首选开发平台

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

DX11时代游戏CG设计二

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
DX11时代游戏CG设计二

DX11时代游戏CG设计一

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
DX11时代游戏CG设计一

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何对MySQL数据库表进行锁定

如何对MySQL数据库表进行锁定

MySQL教程:Order By语法

MySQL教程:Order By语法
下拉加载更多内容 ↓