[C#]基于.net技术的 Rss 订阅开发
2010-10-20 09:44
204 查看
RSS(Really Simple Syndication,真正简单的连锁)是一种 Web 内容连锁格式。RSS 成为通过 Web 连锁新闻内容的标准格式。刚好我现在vs的环境也是.net,因为在.NET3.5下,MS集成了RSS对象。这样一改变,就很大的方便了创建和读取 RSS了。
首先搞了个Rss.aspx页面,在Page_Load方法里面显示让它以标准的xml格式输出
Response.Cache.SetNoStore();
Response.ContentType = "application/xml";
然后根据需要订阅的页面传过来的参数进行一番判断。把所有符合条件的资源都放在DataTable里面。
接着用MemoryStream对象对xml进行操作,就不多说了,看了代码就会明白,同时也给自己做个备忘。如下:
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlTW = new XmlTextWriter(ms, Encoding.UTF8);
xmlTW.Formatting = Formatting.Indented;
xmlTW.WriteStartDocument();
xmlTW.WriteStartElement("rss");
xmlTW.WriteAttributeString("version", "2.0");
xmlTW.WriteStartElement("channel");
if (WebID == 0)
{
}
else
{
xmlTW.WriteElementString("title", "欢迎订阅"+WebDs.Tables[0].Rows[0] ["Web_Name"].ToString()+">>"+ColumnDs.Tables[0].Rows[0]["ColumnName"].ToString());
xmlTW.WriteElementString("link", ColumnDs.Tables[0].Rows[0]["CoulumnUrl"].ToString());
xmlTW.WriteElementString("description", "");
}
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
xmlTW.WriteStartElement("item");
xmlTW.WriteElementString("title", dr["Article_Title"].ToString());
xmlTW.WriteElementString("link", GetNewsLink(dr));
xmlTW.WriteElementString("pubDate",string.Format("{0:R}",dr["CreateTime"]));
xmlTW.WriteElementString("author", dr["UserLogin_FullName"].ToString());
xmlTW.WriteElementString("description", Pub_Config.nohtml(Pub_Config.Substrin(dr["Article_Body"], 400)));
xmlTW.WriteEndElement();
}
xmlTW.WriteEndElement();
xmlTW.WriteEndElement();
xmlTW.WriteEndDocument();
xmlTW.Flush();
byte[] buffer = ms.ToArray();
Response.Write(Encoding.UTF8.GetString(buffer));
Response.End();
xmlTW.Close();
ms.Close();
ms.Dispose();
要注意的是:
1.XML格式是大小写敏感的,这就意味着,XML元素的起始和终止标签必须匹配,拼写和大小写都必须一致。
2.RSS2.0的根元素是< rss>元素,这个元素可以有一个版本号的属性,例如:
< rssversion="2.0">
…
< /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.aspx页面,在Page_Load方法里面显示让它以标准的xml格式输出
Response.Cache.SetNoStore();
Response.ContentType = "application/xml";
然后根据需要订阅的页面传过来的参数进行一番判断。把所有符合条件的资源都放在DataTable里面。
接着用MemoryStream对象对xml进行操作,就不多说了,看了代码就会明白,同时也给自己做个备忘。如下:
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlTW = new XmlTextWriter(ms, Encoding.UTF8);
xmlTW.Formatting = Formatting.Indented;
xmlTW.WriteStartDocument();
xmlTW.WriteStartElement("rss");
xmlTW.WriteAttributeString("version", "2.0");
xmlTW.WriteStartElement("channel");
if (WebID == 0)
{
}
else
{
xmlTW.WriteElementString("title", "欢迎订阅"+WebDs.Tables[0].Rows[0] ["Web_Name"].ToString()+">>"+ColumnDs.Tables[0].Rows[0]["ColumnName"].ToString());
xmlTW.WriteElementString("link", ColumnDs.Tables[0].Rows[0]["CoulumnUrl"].ToString());
xmlTW.WriteElementString("description", "");
}
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
xmlTW.WriteStartElement("item");
xmlTW.WriteElementString("title", dr["Article_Title"].ToString());
xmlTW.WriteElementString("link", GetNewsLink(dr));
xmlTW.WriteElementString("pubDate",string.Format("{0:R}",dr["CreateTime"]));
xmlTW.WriteElementString("author", dr["UserLogin_FullName"].ToString());
xmlTW.WriteElementString("description", Pub_Config.nohtml(Pub_Config.Substrin(dr["Article_Body"], 400)));
xmlTW.WriteEndElement();
}
xmlTW.WriteEndElement();
xmlTW.WriteEndElement();
xmlTW.WriteEndDocument();
xmlTW.Flush();
byte[] buffer = ms.ToArray();
Response.Write(Encoding.UTF8.GetString(buffer));
Response.End();
xmlTW.Close();
ms.Close();
ms.Dispose();
要注意的是:
1.XML格式是大小写敏感的,这就意味着,XML元素的起始和终止标签必须匹配,拼写和大小写都必须一致。
2.RSS2.0的根元素是< rss>元素,这个元素可以有一个版本号的属性,例如:
< rssversion="2.0">
…
< /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()来转化如期格式,就如我上面那个例子。
最终结果:
相关文章推荐
- 基于.net技术的 Rss 订阅开发
- 基于.net技术的 Rss 订阅开发
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- 基于C#.net开发的RSS协议解析器和编写器
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速Web开发框架设计
- 基于.NET下的代码开发规范(C#版本)
- 在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器 分类: C# 2014-10-27 16:27 594人阅读 评论(0) 收藏
- 基于.net平台remoting、DB2技术的大型分布式HIS系统架构及开发(项目架构师方向)
- 在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器 分类: C# 2014-10-27 16:27 593人阅读 评论(0) 收藏
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V3.3.9 Stable [开源]
- 一起谈.NET技术,如何成为人尽皆知的C#开发人员
- 关于基于.net的WEB程序开发所需要的一些技术归纳
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术--基于VS 2008(兼容VS 2005)/C#】★★★
- 基于.NET环境的分布式应用系统开发技术
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V1.8.1 [开源]
- C#入门教程(一)–.Net平台技术介绍、C#语言及开发工具介绍-打造C#学习教程
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- 基于.net平台remoting、DB2技术的大型分布式HIS系统架构及开发(项目架构师方向)
- 成功试验基于C#/.NET的Android开发
- 基于组件技术的C#开发 --委托