蓝鲸 发表于 2005-11-18 22:54

〖原创〗建立RSS2.0的ASP函数

前几天为一家单位修改网站,就赠送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

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

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

   &#39; 建立channel节点
   set objXMLchannel = objXMLdoc.createNode("element", "channel", "")
   objXMLroot.AppendChild(objXMLchannel)

   &#39;----------------建立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" )
%>
页: [1]
查看完整版本: 〖原创〗建立RSS2.0的ASP函数