Web 2.0时代RSS的.Net实现

2016-02-19 15:27 10 1 收藏

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

【 tulaoshi.com - Web开发 】

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

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

  目需要,自己写了一个.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开发
什么是web 2.0 (2)     和google类似,DoubleClick是互联网时代真正的孩子。它把软件作为一种服务,在数据管理中有核心的能力。正如上面所说的,它是互联网服务的先驱,甚至早在还没有互联网服务这个名称之前。但是,DoubleClick最终受限于其自身的商业模式。它引入的是1990年代的概念,即互联网是关于出版,而非参...
标签: Web开发
什么是web 2.0(1) 为下一代软件的设计模式和商业模板 2001年秋季网络泡沫的破灭标志着互联网的一个转折点。很多人得出结论说,互联网被过分夸大了,实际上,泡沫和随之而来的衰退看上去是所有科技革命的共同特点。衰退是正处于上升期的科技准备占据中央舞台的特色。伪装者被逐出门外,真正的成名故事显示出他们的实力,开始理解一...
标签: Web开发
历史很重要。对一个技术的学习也应当从历史出发,通过其在时间形成历史的流变,得以知晓现状,甚至能够预知未来。 那Web 1.0是什么呢? 他们说,记得静态HTML的WWW时代么? (那个时代的WWW应用、人们的Web体验、对社会的影响如何?) 那么动态HTML和静态HTML下的Web相比,是多少版本?1.5?对了,他们是真这么叫的。 (在效果和影...
标签: Web开发
        如果想学习Asp.Net2.0的异步页技术,那么一定要仔细阅读http://www.microsoft.com/china/MSDN/library/default.mspx?mfr=true,并且下载它的源代码仔细揣摩。全文共介绍了3种实现异步页的编程模型,且功能一种比一种强大。多余的我就不多说了,直接看最后一种模型:使用PageAsyncTask类、Regi...

经验教程

672

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部