有关于怎么生成一个RSS文档的小例子
2007-08-15 22:40
441 查看
最近跟着公司在开发一个新闻系统,经理说可能要对新闻分类显示RSS信息,以便读者订阅,让读者及时知道最新的新闻.这不,今天就研究了一天关于RSS的东西.整的头又点晕(哎,菜鸟就是菜鸟,没想法 - -#).
先说说有关怎么生成一个RSS文档吧.我就针对我这里的这个小例子来说,这个小例子模仿的是一个教育新闻类(数据都是静态的,实际应用中是要从数据库里读取新闻记录的,这里是方便举例,所以就这么做了).先看看HTML代码吧.Default.aspx页面的HTML代码如下:
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<fieldset>
<legend>教育新闻 <input type="button" value="RSS" onclick="getRSS()" /></legend>
<p><a href="NewsView.aspx">aaaaaaaaaaaaaaaaaaaaaaa</a></p>
<p><a href="NewsView.aspx">bbbbbbbbbbbbbbbbbbbbbbbbb</a></p>
<p><a href="NewsView.aspx">ccccccccccccccccccccccccc</a></p>
<p><a href="NewsView.aspx">dddddd</a></p>
</fieldset>
</div>
</form>
<script>...
function getRSS()
...{
var news = document.getElementsByTagName('a');//得到<a>标签数组,总共有4个<a>标签,所以news.length为4
var titles='';
for(var i=0;i<news.length;i++)
...{
titles+=news[i].innerText+'|';//把每条新闻的标题整合成一个数组,这里得到的结果是形如:aaaaaaaaaaaaaaaa|bbbbbbbbbb|ccccccccccccc|
}
//alert(titles);
var today = new Date();//取系统当前时间
window.open('rss.aspx?titles='+titles+'&pubDate='+today.toGMTString());//将新闻标题整合成的数组以及当前时间的GMT格式传递给rss.aspx页面
}
</script>
</body>
</html>
HTML代码其实很简单,有4条新闻,还有一个按钮,其onclick事件调用JS函数getRSS(),这个函数主要就是生成一些必要的参数,然后传递给一个叫rss.aspx的页面.rss.aspx页面就是用来生成RSS文档的.RSS页面的的HTML代码只有一行.
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="rss.aspx.cs" Inherits="rss" %>
rss.aspx.cs页面代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class rss : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
string titles = Request.QueryString["titles"].ToString();//获取传递过来的参数
//string titles = "aaaaaaaaaaaaaaaaaaaa|bbbbbbbbbbbbbbbbbbbbb|ccccccccccccccccc|ddddd|";
titles = titles.Remove(titles.LastIndexOf('|'));//移除最后的一条'|'线
string[] list = titles.Split('|');//按'|'把字符串划分成一个数组,这里生成的数组有4个元素,list[0]=aaaaaaaaa,list[1]=bbbbbbb,list[2]=cccccccccccc,list[3]=ddddd
string pubDate = Request.QueryString["pubDate"].ToString();//获取传递过来的参数
StringBuilder rss = new StringBuilder();
rss.Append("<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">");//rss文档必须的标签
rss.Append("<channel>");//RSS文档必须的标签
rss.Append("<title>教育新闻</title>");//RSS文档必须的标签
rss.Append("<link />");//RSS文档必须的标签
rss.Append("<description>贵州教育网的教育新闻</description>");//RSS文档必须的标签
rss.Append("<dc:language>zh-CHS</dc:language>");//可选的标签
rss.Append("<generator>RSS Create By ASP.NET</generator>");//可选的标签
for (int i = 0; i < list.Length;i++ )
...{
rss.Append("<item>");//RSS文档必须的标签
rss.Append("<dc:creator>Xiao Jun</dc:creator>");//可选标签
rss.Append("<title>"+list[i]+"</title>");//必须的标签
rss.Append("<link>NewsView.aspx?NewsID="+i+"</link>");//必须的标签
rss.Append("<pubDate>"+pubDate+"</pubDate>");//可选的标签
rss.Append("<guid>NewsView.aspx?NewsID=" + i + "</guid>");//可选的标签
rss.Append("<description>这是第" + i + "条新闻</description>");//这个标签最好要有
rss.Append("</item>");//<item>的结束标签
}
rss.Append("</channel>");//<channel>的结束标签
rss.Append("</rss>");//<rss>的结束标签
Response.Clear();//晴空response中的内容
Response.ContentType = "text/xml";//设定内容的MIME类型为XML文件,因为RSS文档其实也是一个XML文档
Response.Write(rss);//输出RSS
}
}
生成的RSS文档如下:
- <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
- <channel>
<title>教育新闻</title>
<link />
<description>贵州教育网的教育新闻</description>
<dc:language>zh-CHS</dc:language>
<generator>RSS Create By ASP.NET</generator>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>aaaaaaaaaaaaaaaaaaaaaaa</title>
<link>NewsView.aspx?NewsID=0</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=0</guid>
<description>这是第0条新闻</description>
</item>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>bbbbbbbbbbbbbbbbbbbbbbbbb</title>
<link>NewsView.aspx?NewsID=1</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=1</guid>
<description>这是第1条新闻</description>
</item>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>ccccccccccccccccccccccccc</title>
<link>NewsView.aspx?NewsID=2</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=2</guid>
<description>这是第2条新闻</description>
</item>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>dddddd</title>
<link>NewsView.aspx?NewsID=3</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=3</guid>
<description>这是第3条新闻</description>
</item>
</channel>
</rss>
这只是一个简单的小例子,具体功能可以自行扩展,RSS文档生成好了,下面的工作就是要写一个RSS阅读器了.有关RSS阅读器的文章,请关注我的BLOG,可能会在以后的几天里把有关RSS阅读器的东东写出来给大家分享,我也不懂,在研究几天.呵呵~~
先说说有关怎么生成一个RSS文档吧.我就针对我这里的这个小例子来说,这个小例子模仿的是一个教育新闻类(数据都是静态的,实际应用中是要从数据库里读取新闻记录的,这里是方便举例,所以就这么做了).先看看HTML代码吧.Default.aspx页面的HTML代码如下:
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<fieldset>
<legend>教育新闻 <input type="button" value="RSS" onclick="getRSS()" /></legend>
<p><a href="NewsView.aspx">aaaaaaaaaaaaaaaaaaaaaaa</a></p>
<p><a href="NewsView.aspx">bbbbbbbbbbbbbbbbbbbbbbbbb</a></p>
<p><a href="NewsView.aspx">ccccccccccccccccccccccccc</a></p>
<p><a href="NewsView.aspx">dddddd</a></p>
</fieldset>
</div>
</form>
<script>...
function getRSS()
...{
var news = document.getElementsByTagName('a');//得到<a>标签数组,总共有4个<a>标签,所以news.length为4
var titles='';
for(var i=0;i<news.length;i++)
...{
titles+=news[i].innerText+'|';//把每条新闻的标题整合成一个数组,这里得到的结果是形如:aaaaaaaaaaaaaaaa|bbbbbbbbbb|ccccccccccccc|
}
//alert(titles);
var today = new Date();//取系统当前时间
window.open('rss.aspx?titles='+titles+'&pubDate='+today.toGMTString());//将新闻标题整合成的数组以及当前时间的GMT格式传递给rss.aspx页面
}
</script>
</body>
</html>
HTML代码其实很简单,有4条新闻,还有一个按钮,其onclick事件调用JS函数getRSS(),这个函数主要就是生成一些必要的参数,然后传递给一个叫rss.aspx的页面.rss.aspx页面就是用来生成RSS文档的.RSS页面的的HTML代码只有一行.
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="rss.aspx.cs" Inherits="rss" %>
rss.aspx.cs页面代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class rss : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
string titles = Request.QueryString["titles"].ToString();//获取传递过来的参数
//string titles = "aaaaaaaaaaaaaaaaaaaa|bbbbbbbbbbbbbbbbbbbbb|ccccccccccccccccc|ddddd|";
titles = titles.Remove(titles.LastIndexOf('|'));//移除最后的一条'|'线
string[] list = titles.Split('|');//按'|'把字符串划分成一个数组,这里生成的数组有4个元素,list[0]=aaaaaaaaa,list[1]=bbbbbbb,list[2]=cccccccccccc,list[3]=ddddd
string pubDate = Request.QueryString["pubDate"].ToString();//获取传递过来的参数
StringBuilder rss = new StringBuilder();
rss.Append("<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">");//rss文档必须的标签
rss.Append("<channel>");//RSS文档必须的标签
rss.Append("<title>教育新闻</title>");//RSS文档必须的标签
rss.Append("<link />");//RSS文档必须的标签
rss.Append("<description>贵州教育网的教育新闻</description>");//RSS文档必须的标签
rss.Append("<dc:language>zh-CHS</dc:language>");//可选的标签
rss.Append("<generator>RSS Create By ASP.NET</generator>");//可选的标签
for (int i = 0; i < list.Length;i++ )
...{
rss.Append("<item>");//RSS文档必须的标签
rss.Append("<dc:creator>Xiao Jun</dc:creator>");//可选标签
rss.Append("<title>"+list[i]+"</title>");//必须的标签
rss.Append("<link>NewsView.aspx?NewsID="+i+"</link>");//必须的标签
rss.Append("<pubDate>"+pubDate+"</pubDate>");//可选的标签
rss.Append("<guid>NewsView.aspx?NewsID=" + i + "</guid>");//可选的标签
rss.Append("<description>这是第" + i + "条新闻</description>");//这个标签最好要有
rss.Append("</item>");//<item>的结束标签
}
rss.Append("</channel>");//<channel>的结束标签
rss.Append("</rss>");//<rss>的结束标签
Response.Clear();//晴空response中的内容
Response.ContentType = "text/xml";//设定内容的MIME类型为XML文件,因为RSS文档其实也是一个XML文档
Response.Write(rss);//输出RSS
}
}
生成的RSS文档如下:
- <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
- <channel>
<title>教育新闻</title>
<link />
<description>贵州教育网的教育新闻</description>
<dc:language>zh-CHS</dc:language>
<generator>RSS Create By ASP.NET</generator>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>aaaaaaaaaaaaaaaaaaaaaaa</title>
<link>NewsView.aspx?NewsID=0</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=0</guid>
<description>这是第0条新闻</description>
</item>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>bbbbbbbbbbbbbbbbbbbbbbbbb</title>
<link>NewsView.aspx?NewsID=1</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=1</guid>
<description>这是第1条新闻</description>
</item>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>ccccccccccccccccccccccccc</title>
<link>NewsView.aspx?NewsID=2</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=2</guid>
<description>这是第2条新闻</description>
</item>
- <item>
<dc:creator>Xiao Jun</dc:creator>
<title>dddddd</title>
<link>NewsView.aspx?NewsID=3</link>
<pubDate>Wed, 15 Aug 2007 14:35:23 UTC</pubDate>
<guid>NewsView.aspx?NewsID=3</guid>
<description>这是第3条新闻</description>
</item>
</channel>
</rss>
这只是一个简单的小例子,具体功能可以自行扩展,RSS文档生成好了,下面的工作就是要写一个RSS阅读器了.有关RSS阅读器的文章,请关注我的BLOG,可能会在以后的几天里把有关RSS阅读器的东东写出来给大家分享,我也不懂,在研究几天.呵呵~~
相关文章推荐
- 应.net 工作群(4269891)需求,特发表一个RSS生成例子.
- Oracle文档关于模块重载的一个例子,其实是可以。
- PHP递归生成树的一个小例子
- 关于多线程的一个例子(UI实时显示)
- CsvHelper说明文档&一个小例子
- 关于ExpandableListView用法的一个简单小例子
- 关于Hibernate中如果一个实体类是 Set,怎么去查询数据
- 结合JsBarcode文档整理出来的一个demo,完全够用,生成和打印条形码
- 一个关于补码的有趣的例子
- jquery live 函数使用的一个例子,和一些帮助文档
- Java: 分析一个简单的配置文件并利用分析结果生成HTML文档
- 一个关于类加载器加载顺序的经典例子
- 一个关于Mozilla的文档
- 一个关于Timer()的例子..
- POI生成Excel一个简单的分页例子
- jquery下拉菜单怎么做,一个简单的纯手写例子
- 分享一些经验,关于怎么创建一个unicode文本文件,并写入unicode文本(比如中文)
- 关于Lasso回归的一个例子
- 关于ExpandableListView的一个小例子
- 【mysql】关于子查询的一个例子