用asp生成rss订阅文件feed.asp的方法

更新在http://www.laotao.cn/article.asp?id=254

现在论坛用rss的越来越多了,总想在自己的系统中也搞个rss订阅,这样不要劳驾各位每天来都登陆系统,直接用rss工具就可以大体看一下今天的关注内容了,然后有重点地去查看,其实我不是很专业,在网上搜罗了一些资料,慢慢的思路清晰了,然后就写了出来
其实过程是简单的大概就是
先用asp读取数据从数据库,然后生成一定格式的一个文本串,这个文本串就是rss用记事本打开时的内容是一样的,然后把这个文本串写到一个文件中,这个文件时xml结尾的
然后看的人在浏览器中就可以看到了那个rss的样子

这个地方介绍两种方法
1、还有一个就是直接在asp文件里面生成
2、一个是用asp去在目录里面生成一个xml文件

这里先介绍第一个吧

我帖代码了

<!--#include file="Connections/conn.asp" --> 数据库包含的连接文
<%Response.ContentType="text/xml; charset=gb2312;"%>
<?xml version="1.0" encoding="gbk"?> 这里的编码方式可能要注 意了
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel><title><![CDATA[SCBXinXi]]></title>
<link>172.20.41.7</link>
<description><![CDATA[webdescription]]></description>
<generator>generator</generator>
<language>zh-CN</language>
<copyright><![CDATA[taochunsong]]></copyright>
<pubDate>pubDate</pubDate> 上面部分是头部,下面开始循环 生成item部分
<%
Dim liuy,myrss
Dim liuy_numRows
Set liuy = Server.CreateObject("ADODB.Recordset")
liuy.ActiveConnection = conn
liuy.Source = "SELECT * FROM MYHOPES order by ContId desc"
liuy.CursorType = 0
liuy.CursorLocation = 2
liuy.LockType = 1
liuy.Open()
liuy_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
liuy_numRows = liuy_numRows + Repeat1__numRows

While ((Repeat1__numRows <> 0) AND (NOT liuy.EOF))

%>
<item>
<title><![CDATA[<%=liuy("Zhuti")%>]]></title>
<link><![CDATA[http://172.20.41.7/xuyuan/myrss.asp?myid=<%=liuy("ContId")%>]]></link>
<author><![CDATA[<%=liuy("UserName")%>]]></author>
<pubDate><%=liuy("ShiJian")%></pubDate>
<guid><%=liuy("ContId")%></guid>
<description><![CDATA[<%=liuy("NeiRong")%>]]></description>

</item>

<%

Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
liuy.MoveNext()
Wend

liuy.Close()
Set liuy = Nothing
conn.close '关闭数据库连接
%>
</channel>
</rss> 把尾巴给加上

*请注意,复制过去的时候把中文的注释全部去掉

第二种情况是直接生成一个xml的
这个我没有测试呢,fso文件操作的函数是down人家的
大概过程
1.熟悉rss规范以及格式
这个简单如果不好找规范的话,可以打开别人的rss.xml聚合源来看看就知道了
详细可以看这里RSS 2.0规范

2.了解生成过程
建立一个asp(createrss.asp)--> 处理读取到的数据(sql/access等)-->写入rss.xml
3.编制
这里面试用了别人编写的一个创建并写入文件的函数
write2file.asp

<%
' wite2file.asp
' 写入文件
Sub Write2File(strFile, strContent, blnAppend)
' strFile 文件名(路径) , strContent 写入的内容, blnAppend 是否追加
On Error Resume Next
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If blnAppend Then
Set objWriteText = objFSO.OpenTextFile(strFile,8,True)
Else
Set objWriteText = objFSO.OpenTextFile(strFile,2,True)
End If
objWriteText.WriteLine (strContent)
Set objWriteText = Nothing
Set objFSO = Nothing
' 容错处理
Select Case Err
Case 424 Response.Write "路径未找到或者该目录没有写入权限."
Case Else Response.Write Err.Description
'Case Else Response.Write ErrMsg
End Select
End Sub
'调用
'Write2File "c:/dd.ini", "dd", True
'Call Write2File ("c:/dd.ini", "dd", True)
'可以创建文件,但是不能创建目录
%>

createrss.asp

'createrss.asp
<!--#i nclude file="write2file.asp"-->
dim myrss,enter
enter=false'用来判断myrss是否获得有效数据
'定义rss.xml头,其实就是一步一步用asp文件里面累加出一个字符串,然后写入到文件中,
myrss="<?xml version=""1.0"" encoding=""gb2312"" standalone=""yes""?><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/""><channel><title>webtitle</title><link>sitehost</link><description>webdescription</description><generator>generator</generator><language>zh-CN</language><copyright>taochunsong</copyright><pubDate>pubDate</pubDate>"

'读取数据<item><...>
'事先定义好数据库连接conn
set rs=server.CreateObject("adodb.recordset")
sql="select * from table"
rs.open sql, conn, 1, 1
if not rs.eof then
enter=true'有内容可以插入rss
do while not rs.eof
myrss=myrss & "<item><title>" & rs("title") & "</title><author>" & rs("author") & "</author><link>" & rs("link") & "</link><pubDate>" & rs("pubdate") & "</pubDate><guid>" & rs("link") & "</guid><description><![CDATA[" & rs("yourcontent") & "]]></description><category>" & rs("category") & "</category></item>"
rs.movenext
loop
end if
rs.close
set rs=nothing
'rss结束
'结束rss.xml
myrss=myrss & "</channel></rss>"
'写入到rss.xml
if enter=true then
Write2File server.MapPath("rss.xml"), myrss, false'不要追加,每次更新,如果要追加的话就要先删除原来的rss.xml了,然后再生成,这里不要了
end if
%>

好了
要是直接就在asp文件中生成的话直接就把垒成的字符串response.write就可以了。
好处在于每次访问就是新的
如果成另一个文件的话,那么就要经常去执行那个asp文件来更新你的xml文件了


其他参考
RSS 2.0规范
为自己的网站添加RSS功能  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值