您的位置:首页 > 其它

有关于怎么生成一个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阅读器的东东写出来给大家分享,我也不懂,在研究几天.呵呵~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: