主题:  建立RSS2.0的ASP函数

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#12004/12/21 11:22:24
前几天为一家单位修改网站,就赠送RSS生成接口,下面把函数在这里公布一下。
RSS用ASP包装不是很好,如果用.NET就很完美了,我写过这样程序,认为生成比较容易,如果要读取,并且要兼容几种版本就要下些功夫了。比如天极网用的是连.net都不支持的“GBK”编码,读取时有些问题,这不是俺的错,谁让它做不标准的格式了。
废话少说,下面就是代码:

inc/rss.asp:

<%
RSS_ChannelTitle = "东海龙宫"
RSS_ChannelLink = "http://www.hellosea.com"
RSS_ChannelDescription = "海洋龙文化"
RSS_ChannelLanguage = "zh-cn"
RSS_ChannelPubDate = "2004-12-20T10:00:00"

ReDim RSS_Item(0, 4)

RSSItemNum = 0

function RedimRssItem( itemNum )
	Redim RSS_Item(itemNum - 1, 4)
	RSSItemNum = itemNum
end function

function BuildRssFile( strFileName )
	Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
	objXMLdoc.preserveWhiteSpace = True

	' 建立版本号和encoding属性
	Set objPI = objXMLdoc.createProcessingInstruction ("xml","version='1.0' encoding='gb2312'")
	objXMLdoc.insertBefore objPI, objXMLdoc.childNodes(0)

	Set objXMLroot = objXMLdoc.createNode("element", "rss", "")
	objXMLroot.SetAttribute "version", "2.0"
	objXMLdoc.AppendChild(objXMLroot)

	' 建立channel节点
	set objXMLchannel = objXMLdoc.createNode("element", "channel", "")
	objXMLroot.AppendChild(objXMLchannel)

	'----------------建立channel中的项------------------
	set objXMLTitle = objXMLdoc.createNode("element", "title", "")
	objXMLTitle.Text = RSS_ChannelTitle
	objXMLchannel.AppendChild(objXMLTitle)

	set objXMLink = objXMLdoc.createNode("element", "link", "")
	objXMLink.Text = RSS_ChannelLink
	objXMLchannel.AppendChild(objXMLink)

	set objXMLDescription = objXMLdoc.createNode("element", "description", "")
	objXMLDescription.Text = RSS_ChannelDescription
	objXMLchannel.AppendChild(objXMLDescription)

	set objXMLanguage = objXMLdoc.createNode("element", "language", "")
	objXMLanguage.Text = RSS_ChannelLanguage
	objXMLchannel.AppendChild(objXMLanguage)

	set objXMLPubDate = objXMLdoc.createNode("element", "pubDate", "")
	objXMLPubDate.Text = RSS_ChannelPubDate
	objXMLchannel.AppendChild(objXMLPubDate)

	for i = 0 to RSSItemNum - 1
		set objXMLItem = objXMLdoc.createNode("element", "item", "")
		objXMLchannel.AppendChild(objXMLItem)
	
		set objXMLTitle = objXMLdoc.createNode("element", "title", "")
		objXMLTitle.Text = RSS_Item(i, 0)
		objXMLItem.AppendChild(objXMLTitle)
	
		set objXMLink = objXMLdoc.createNode("element", "link", "")
		objXMLink.Text = RSS_Item(i, 1)
		objXMLItem.AppendChild(objXMLink)
	
		set objXMLDescription = objXMLdoc.createNode("element", "description", "")
		objXMLDescription.Text = RSS_Item(i, 2)
		objXMLItem.AppendChild(objXMLDescription)
	
		set objXMLAuthor = objXMLdoc.createNode("element", "author", "")
		objXMLAuthor.Text = RSS_Item(i, 3)
		objXMLItem.AppendChild(objXMLAuthor)
	
		set objXMLPubDate = objXMLdoc.createNode("element", "pubDate", "")
		objXMLPubDate.Text = RSS_Item(i, 4)
		objXMLItem.AppendChild(objXMLPubDate)
	next

	objXMLDoc.Save Server.MapPath(strFileName)

end function
%>


下面是过程的用法:
<!--#include file="inc/rss.asp"-->

<%
RSS_ChannelTitle = "新闻动态"
RSS_ChannelLink = "http://www.hellosea.com/article/news/index.aspx"
RSS_ChannelDescription = "国际、国内新闻"
RSS_ChannelLanguage = "zh-cn"
RSS_ChannelPubDate = "2004-12-20T15:58:30"

RedimRssItem(2)

RSS_Item(0, 0) = "浙江外逃女贪官杨秀珠贪污案涉案金额超过两亿"
RSS_Item(0, 1) = "http://www.hellosea.com/article/news/view.aspx?ArticleID=25"
RSS_Item(0, 2) = "温州市纪委七日在温州市政协八届九次常委会上通报了杨秀珠案件的查处情况。杨秀珠于去年四月份携女儿、女婿及外孙出逃境外,至今未曾归案。"
RSS_Item(0, 3) = "中国新闻网"
RSS_Item(0, 4) = "2004-12-08T01:11:40"

RSS_Item(1, 0) = "讨薪农妇熊德明为民工维权续:相信总理会支持"
RSS_Item(1, 1) = "http://www.hellosea.com/article/news/view.aspx?ArticleID=20"
RSS_Item(1, 2) = "讨薪农妇熊德明为民工维权续:相信总理会支持"
RSS_Item(1, 3) = "publisher"
RSS_Item(1, 4) = "2004-12-08T01:11:40"

BuildRssFile( "001.xml" )
%>



非常大鱼

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#22004/12/21 11:28:54
不错.
蓝鲸兄总是会经常写一些东西出来

我就惭愧了,最近忙一些东西,如你所说,感觉自己入了邪道了.



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#32004/12/21 14:44:44
allinhands在上个帖子中说
引用:
不错.
蓝鲸兄总是会经常写一些东西出来

我就惭愧了,最近忙一些东西,如你所说,感觉自己入了邪道了.


只是最近在忙这些,所以写点也不算啥。其实也没有邪不邪的,正邪都一条道的,只是看怎么用了。


非常大鱼

透明男孩

职务:普通成员
等级:2
金币:0.0
发贴:373
注册:2001/8/7 7:32:48
#42004/12/24 14:16:21
问一句.
RSS是什么东西?
常常看到一些博客程序里有个RSS图标,就是不知道咋玩的?



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#52004/12/24 14:29:13
RSS是一种用于描述网页或网站内容信息的一种标准文本格式,目前有几种版本RSS0.9X,RDF1.0,RSS2.0等格式,现在也出现ATOM0.3这种格式。RSS用于聚合查看,也就是用一可以支持RSS浏览的工具或网站,不用直接到原网站就可以查看各种信息,也可以订阅某频道的内容。


非常大鱼

5D公害

职务:普通成员
等级:9
金币:10.3
发贴:36272
注册:2002/1/13 9:52:57
#62004/12/24 14:31:51
个人觉得动网BBS的那个RSS不错