Web 2.0时代RSS的.Net实现

原创 2010年05月27日 21:27:00

Web 2.0时代RSS的.Net实现


 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 /// <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信息了

KOA 2.0 新一代WEB开发框架

koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。
  • 2018年01月06日 11:25

[Web3.0]什么是Web3.0/时代

问题描述虽然现在移动互联网这么接地气,每天身陷其中无法自拔,但是具体移动互联网的发展过往与总体趋势如何,以及具体的表现形式是什么,并没有比较清晰的划分。于是想结合较大的趋势和背景进行下了解,以避免当局...
  • suxiang198
  • suxiang198
  • 2015-08-02 11:17:57
  • 3923

asp.net中生成、读取Rss

主要是生成、读取xml文件,这里Repeater作为xml的载体,并不真正生成xml文件。要注意语句,CDATA 节用于转义,否则将被识别为标记的文本块。类似html中的标签,用于兼容一些浏览器。 R...
  • wszhoho
  • wszhoho
  • 2007-05-09 15:24:00
  • 1851

asp.net实现网站Rss订阅功能

Q:rss是什么? A:rss是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication 的简称,通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供...
  • baogreat
  • baogreat
  • 2007-11-14 10:38:00
  • 1397

区块链与新经济++数字货币2.0时代

  • 2017年11月03日 17:54
  • 11.8MB
  • 下载

WEB演变史

WEB演变史 在WEB发展的今天,总共经历了3个时代,WEB1.0~WEB3.0,每一个时代都有每一个时代的产物,那让我们一起看下WEB的一步步演变吧~ WEB1.0时代 在WEB1.0时代,网站的主...
  • lifei191042
  • lifei191042
  • 2017-02-27 15:15:16
  • 377

【memcached】简介

What?是什么?     memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网...
  • binggetong
  • binggetong
  • 2017-01-22 21:24:03
  • 233

从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD

Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc...
  • sD7O95O
  • sD7O95O
  • 2017-10-19 00:00:00
  • 419

01、ASP.Net Core 2.0 Web服务器 和 IIS解耦

01、ASP.Net Core 2.0 Web服务器 和 IIS解耦   一、历史问题 ASP.NET Core出现之前,ASP.NET应用的Web服务器都是IIS。它强依赖于IIS...
  • ai52011
  • ai52011
  • 2017-08-22 11:39:11
  • 1861
收藏助手
不良信息举报
您举报文章:Web 2.0时代RSS的.Net实现
举报原因:
原因补充:

(最多只允许输入30个字)