基于.NET技术的RSS订阅开发实例

开发 后端
RSS(Really Simple Syndication,真正简单的连锁)是一种Web内容连锁格式。RSS成为通过Web连锁新闻内容的标准格式。在.NET3.5下,MS集成了RSS对象。这样一改变,就很大的方便了创建和读取RSS了。本文将介绍的是基于.NET技术的RSS订阅开发实例。

首先搞了个Rss.aspx页面,在Page_Load方法里面显示让它以标准的xml格式输出

  1. Response.Cache.SetNoStore();   
  2. Response.ContentType = "application/xml";  

然后根据需要订阅的页面传过来的参数进行一番判断。把所有符合条件的资源都放在DataTable里面。

接着用MemoryStream对象对xml进行操作,就不多说了,看了代码就会明白,同时也给自己做个备忘。RSS订阅开发实例如下:

  1. MemoryStream ms = new MemoryStream();  
  2. XmlTextWriter xmlTW = new XmlTextWriter(ms, Encoding.UTF8);  
  3. xmlTW.Formatting = Formatting.Indented;  
  4. xmlTW.WriteStartDocument();  
  5. xmlTW.WriteStartElement("rss");  
  6. xmlTW.WriteAttributeString("version", "2.0");  
  7. xmlTW.WriteStartElement("channel");  
  8. if (WebID == 0)  
  9. {  
  10. }  
  11. else  
  12. {  
  13. xmlTW.WriteElementString("title", "欢迎订阅"+WebDs.Tables[0].Rows[0]["Web_Name"].ToString()+">>"+ColumnDs.Tables[0].Rows[0]["ColumnName"].ToString());  
  14. xmlTW.WriteElementString("link", ColumnDs.Tables[0].Rows[0]["CoulumnUrl"].ToString());  
  15. xmlTW.WriteElementString("description", "");  
  16. }  
  17. DataTable dt = ds.Tables[0];  
  18. foreach (DataRow dr in dt.Rows)  
  19. {  
  20. xmlTW.WriteStartElement("item");  
  21. xmlTW.WriteElementString("title", dr["Article_Title"].ToString());  
  22. xmlTW.WriteElementString("link", GetNewsLink(dr));  
  23. xmlTW.WriteElementString("pubDate",string.Format("{0:R}",dr["CreateTime"]));  
  24. xmlTW.WriteElementString("author", dr["UserLogin_FullName"].ToString());  
  25. xmlTW.WriteElementString("description", Pub_Config.nohtml(Pub_Config.Substrin(dr["Article_Body"], 400)));  
  26. xmlTW.WriteEndElement();  
  27. }  
  28. xmlTW.WriteEndElement();  
  29. xmlTW.WriteEndElement();  
  30. xmlTW.WriteEndDocument();  
  31. xmlTW.Flush();  
  32. byte[] buffer = ms.ToArray();  
  33. Response.Write(Encoding.UTF8.GetString(buffer));  
  34. Response.End();  
  35. xmlTW.Close();  
  36. ms.Close();  
  37. ms.Dispose(); 

RSS订阅开发实例中要注意的是:

1.XML格式是大小写敏感的,这就意味着,XML元素的起始和终止标签必须匹配,拼写和大小写都必须一致。

2.RSS2.0的根元素是< rss>元素,这个元素可以有一个版本号的属性,例如:

  1. < rssversionrssversion="2.0">   
  2. ...   
  3. < /rss>  

< rss>元素只有一个子元素< channel>,用来描述聚合的内容。在< channel>元素里面有三个必需的子元素,用来描述Web站点的信息。这三个元素是:

title—定义聚合文件的名称,一般来说,还会包括Web站点的名称;

link—Web站点的URL;

description—Web站点的一段简短的描述。

除此之外,还有一些可选元素来描述站点信息。这些元素的更多信息请参见RSS2.0规范。

每一个新闻项目放在一个单独的< item>元素中。< channel>元素可以有任意数量的< item>元素。每个< item>元素可以有多种的子元素,唯一的要求是最少必须包含< title>元素和< description>元素其中一个作为子元素。以下列出了一些相关的< item>子元素:

title—新闻项目的标题;

link—新闻项目的URL;

description—新闻项目的大纲;

author—新闻项目的作者;

pubDate—新闻项目的发布日期

3.< item>子元素尤其要注意的是pubDate的格式,RSS要求日期必须按照RFC822日期和时间规范进行格式化,此格式要求:开头是一个可选的3字母星期缩写加一个逗号,

.

接着必须是日加上3字母缩写的月份和年份,***是一个带时区名的时间。

我们可以用Stirng.foemat()来转化如期格式,就如我上面那个例子。

RSS订阅开发实例的最终结果:

最终结果

【编辑推荐】

  1. 如何避免ASP.NET缓存占用系统资源
  2. .NET缓存机制探讨与比对
  3. 概述ASP.NET缓存机制
  4. ASP.NET数据缓存之数据缓存浅谈
  5. ASP.NET数据缓存机制浅析
责任编辑:彭凡 来源: 博客园
相关推荐

2009-03-22 10:04:11

ChromeRSS浏览器

2017-04-11 13:31:40

阅读器开源RSS

2022-01-15 07:22:45

RSS订阅互联网聚合阅读

2010-07-26 14:25:06

Widget开发

2010-07-26 14:44:47

Widget开发

2009-07-03 09:44:39

实现RSS功能JSP技术

2020-10-26 10:58:39

Volatility的

2009-04-01 18:13:38

LinuxMonoC#.Net

2022-06-27 13:56:10

设计模式缓存分布式系统

2009-06-15 16:29:42

JSONAJAX

2009-06-12 11:19:03

EJB技术商务预订系统

2010-08-26 10:17:31

DB2.NET开发

2009-08-21 17:11:15

ASP.NET异步回调

2009-08-03 13:30:47

ASP.NET开发

2010-08-11 13:01:09

Flex.NETSocket

2009-03-09 10:28:45

AJAXASP.NETWEB

2023-10-20 14:36:08

开源软件.Net开发

2011-04-19 10:33:16

ASP.NET自定义控

2013-04-22 09:52:04

.netchrome核心开发chrome

2013-04-22 09:56:54

点赞
收藏

51CTO技术栈公众号