首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

本章导读

在系统开发过程中,为满足系统的特殊需求,一方面,需要提供一些及时的新闻信息供用户浏览;而另一方面,开发独立的在线新闻系统需要大量的精力和物力。RSS推出后很好地解决了上述问题。使用它可以很方便地利用他人的资源,真正实现网络资源共享。本章将向读者介绍RSS的使用方法,并对其核心技术的实现进行简要概述。

12.1  RSS概述

RSS是一种描述和同步网站内容的格式,搭建了一个信息迅速传播的技术平台,使得每个人都成为潜在的信息提供者。当发布一个RSS文件后,这个RSS中包含的信息就能直接被其他站点调用。由于RSS的数据都是标准的XML格式,所以也能在其他的终端和服务中使用。

从RSS阅读者的角度来看,完全不必考虑RSS到底是什么意思,只需简单地理解为一种方便的信息获取工具即可。RSS获取信息的模式与加入邮件列表模式相似,无须登录到各个提供信息的站点即可自动获取。例如,采用了RSS订阅后,可以通过RSS阅读器同时浏览新浪、搜狐或百度新闻。

使用RSS获取信息的前提是安装一个RSS阅读器,然后将提供RSS服务的网站加入到RSS阅读器的频道中。大部分RSS阅读器本身也预设了部分RSS频道,如新浪新闻、百度新闻等。

12.1.1  RSS技术特点

RSS通过XML标准定义内容的包装和发布格式,使内容提供者和接收者都能从中获益。对内容提供者来说,RSS技术提供了一个实时、高效、安全、低成本的信息发布渠道。对内容接收者来说,RSS技术提供了一种崭新的阅读体验。RSS技术主要有如下特点。

1.来源多样化特性

RSS技术秉承“推”信息的概念。在新内容在服务器数据库中出现的第一时间内,即被发送到用户端阅读器中,极大地提高了信息的时效和价值。此外,服务器端内容的RSS包装在技术实现上极为简单,而且是一次性的工作。它使长期的信息发布编辑成本几乎降为零,是传统的电子邮件、卫星传输、互联网浏览等发布方式所无法比拟的。

2.无垃圾信息、便利内容管理特性

RSS用户端阅读器完全由用户个人订阅信息来源,如“新华网国际新闻”、“中国汽车网市场行情”、“天极网IT产品资讯”等。RSS阅读器软件可以完全屏蔽掉没有被订阅的内容和信息。并且,下载到本地的订阅内容,可以进行离线阅读、存档、搜索和相关分类等多种管理操作。

12.1.2  RSS的使用

对于浏览用户来说,RSS的使用方法比较简单,下载客户端工具,安装后即可使用。目前RSS客户端工具多种多样,其中最为常用的是周博通阅读器和看天下网络资讯浏览器,读者可以选择适合自己的工具进行下载。周博通阅读器的界面效果如图12-1所示。

12.2  RSS的技术实现

由前面的学习已经了解到,浏览用户只需下载免费的客户端工具后即可实现RSS的订阅功能。但是对于系统站点管理者来说,要想把自己的信息通过RSS传递给浏览用户,必须经过严格的程序设计后才能实现。

图12-1  周博通阅读器效果图

12.2.1  RSS核心技术

RSS被广大Web站点应用后,会增长站点资源的访问量,提高站点的知名度。要在站点实现RSS功能,必须充分使用多种技术。下面将对RSS所必备的技术进行详细介绍。要想使站点实现RSS的发布功能,必须掌握如下技术。

1.数据库技术

数据库技术是动态网页技术的基础,通过数据库技术可以实现站点信息的及时更新。

2.XML技术

XML是由W3C于1998年2月发布的一种标准。XML最大的优势是其拥有的开放性,允许各组织和个人建立适合自己需要的置标集合,并且这些置标可以迅速地投入使用。系统站点的信息发布后,将被保存为一个.xml格式的文件,文件中保存着需要传递的RSS信息数据。客户端RSS浏览器的显示数据是从.xml格式的文件中利用程序读取出来的。在RSS中使用XML文件的基本格式如下所示:

<?xml version="1.0" encoding="GBK"?>

<?xml-stylesheet type="text/css" >

<rss version="2.0">

<channel>

<title>图吧</title>

<image>

<title>XXX.com</title>

<link>http://XXX.com</link>

<url>http:/XXXlogo.gif</url>

</image>

<description>风景、酷车;一切美图,尽在搜狐!</description>

<link>http://pic.sohu.com</link>

<language>zh-cn</language>

<docs>http://XXX.com</docs>

<generator>www.XXX.com</generator>

<ttl>5</ttl>

<item>

<title>XXXXXXX[组图]</title>

<link>http://XXXXXXXXX.html</link>

<description>点击小图查看详情a href=&quot;http://XXXXX.html&quot;& gt;&lt;imgsrc=&quot;http://XXX. jpg&qu

ot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>

<category>XXX图吧</category>

<author>XXX.com</author>

<pubDate>2006-12-26 10:20</pubDate>

</item>

……………………………………

</channel>

</rss>

12.2.2  RSS设计流程

从上面的介绍中可以了解到,RSS功能的实现需要多种技术,并且需要特殊的方法将这些技术结合起来。下面将向读者介绍RSS的基本设计流程。RSS的设计流程如下。

1.设计符合格式的XML文件:123.xml

读者可以直接去RSS站点复制文件源代码。例如,可以到http://pic.news.sohu.com/view/ rss/news.xml页面,通过查看源文件的方式获取符合格式的XML文件,文件保存在“光盘:\12\1”文件夹下,文件名为123.xml。执行效果如图12-2所示。

图12-2  XML文件执行效果图

2.设计XML读取文件:duqv.asp

文件duqv.asp的功能是读取文件12345.xml的数据,将数据以RSS的形式显示出来。文件duqv.asp的主要代码如下所示:

<% @language="VBScript"%>

<%

Function readrss(xmlseed)                               '定义变量

dim xmlDoc

dim http

Set http=Server.CreateObject("Microsoft.XMLHTTP")       '建立HTTP对象

http.Open "GET",xmlseed,False                           '打开XML文件

http.send

Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")

xmlDoc.Async=False                                      '定义是否异步加载XML文件

xmlDoc.ValidateOnParse=False                            '定义是否需要文档验证

xmlDoc.Load(http.ResponseXML)                           '装载数据

Set item=xmlDoc.getElementsByTagName("item")            '建立条数对象

if item.Length<=10 then                                 '如果数量小于10

%>

<script language="JavaScript">

<!--输出提示-->

alert("对不起,该新闻条数已经少于10条!");

</script>

<%

else                                                     '如果数量不小于10

For i=0 To (item.Length-1)                              '逐一读取文件数据

Set title=item.Item(i).getElementsByTagName("title")         '显示title数据

Set link=item.Item(i).getElementsByTagName("link")      '显示link数据

'显示数据

Response.Write("<a href="""& link.Item(0).Text &""" target='_blank'>"& title.Item(0).Text &"</a><br>")

Next

end if

End Function

%>

………………………………

<td width="397" height="24" bgcolor="#9966FF"><span class="style1">搜狐新闻</span></td>

  </tr>

  <tr>

    <td bgcolor="#CCFFFF">

<%

call readrss("http://localhost/shu/12/1/12345.xml")      '显示读取的信息

%></td>

将文件保存在“光盘:\12\1”文件夹下,文件名为duqv.asp,经过浏览器执行后的效果如图12-3所示。

图12-3  浏览器执行RSS效果图

通过上面介绍的设计流程可以了解到,利用ASP实现RSS的功能比较简单,只需掌握XML和ASP的基本知识即可。

12.3  RSS实例

下面将通过一个具体实例讲解RSS的具体使用过程。本实例由7个文件构成,分别是conn.asp、gai.asp、xianshi.asp、12345.xml、addarticle.asp、save.asp和open.asp。上述文件保存在“光盘:\12\1\”文件夹中,具体的页面运行流程如图12-4所示。

技术实现#

 

?实现思路

 

图12-4  系统页面运行流程图

下面将详细介绍上述实例文件的实现过程。

12.3.1  数据库结构

该实例使用Access数据库,由article表构成。表article的设计结构如表12-1所示。

表12-1  表article的设计结构

字段名称

数据类型

是否主键

  

功能描述

Newsid

decimal

递增1

新闻编号

Title

nvarchar

null

标题

Content

varchar

null

新闻内容

Nform

nvarchar

null

新闻来源

dateandtime

datetime

now()

加入时间

12.3.2  数据库连接文件

文件conn.asp的功能是使系统建立和数据库的连接,文件代码如下所示:

<%

   dim conn

   dim connstr

   on error resume next

   connstr="DBQ="+server.mappath("123.mdb")+";DefaultDir=;DRIVER= {Microsoft Access Driver (*.mdb)};"

   set conn=server.createobject("ADODB.CONNECTION")

   conn.open connstr

%>

12.3.3  XML生成文件

XML生成文件gai.asp的功能是生成名为12345.xml的文件,将系统库中的数据读取后保存在12345.xml文件中。文件gai.asp的主要代码如下所示:

<!--#include file="conn.asp" -->

<%

set fso=server.createobject("scripting.filesystemobject")    '创建文件对象

set fs=fso.createtextfile(Server.MapPath("12345.xml"),true) '创建XML文件

fs.writeline("<?xml version=""1.0"" encoding=""gb2312""?>")

                                                             'XML版本、使用汉字符号

fs.writeline("<rss version='2.0'>")                         '在XML文件中写入引号内的数据

fs.writeline("<channel>")

fs.writeline("<title>网</title>")

fs.writeline("<description>新闻更新</description>")

fs.writeline("<link>http://www.xxcom/</link>")

fs.writeline("<language>cn</language>")

fs.writeline("<docs>新闻更新</docs>")

fs.writeline("<generator>Rss Generator By 养殖网</generator>")

fs.writeline("<?xml-stylesheet type=""text/xsl"" href=""../blue/read.xsl""?>")

set rs=server.createobject("adodb.recordset")               '建立连接对象

'查询系统最新的15条数据

rs.open "select top 15 * from article  order by dateandtime desc",conn,1,3 

while not rs.eof                                             '如果有数据存在

fs.writeline("<item>")                                       '在XML文件中写入引号内的数据

fs.writeline("<title>"&rs("title")&"</title>")              '在XML文件中写入系统数据

'在XML文件中写入系统数据

fs.writeline("<link>http://localhost/shu/12/1/open.asp?id="&rs("newsid")&"</link>")

fs.writeline("<author>"&rs("Nform ")&"</author>")

fs.writeline("<pubDate>"&rs("dateandtime")&"</pubDate>")

                                                             '在XML文件中写入系统数据

fs.writeline("</item>")                                      '在XML文件中写入引号内的数据

rs.movenext                                                  '指针下移

wend                                                         '逐一显示数据

rs.close                                                     '关闭连接

set rs=nothing                                               '释放资源

fs.writeline("</channel>")                                   '在XML文件中写入引号内的数据

fs.writeline("</rss>")                                       '在XML文件中写入引号内的数据

fs.close

set fs=nothing

response.Redirect("addarticle.asp")                         '来到信息添加页面

%>

12.3.4  信息显示文件

信息显示文件xianshi.asp的功能是将12345.xml文件中的信息以网页的形式显示出来。其具体显示效果如图12-5所示。

图12-5  信息显示页面效果图

文件xianshi.asp的主要代码如下所示:

<% @language="VBScript"%>

<%

Function readrss(xmlseed)                               '定义变量

dim xmlDoc

dim http

Set http=Server.CreateObject("Microsoft.XMLHTTP")       '建立HTTP对象

http.Open "GET",xmlseed,False                           '打开XML文件

http.send

Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")

xmlDoc.Async=False                                       '定义是否异步加载xml文件

xmlDoc.ValidateOnParse=False                            '定义是否需要文档验证

xmlDoc.Load(http.ResponseXML)                           '装载数据

Set item=xmlDoc.getElementsByTagName("item")            '建立条数对象

if item.Length<=10 then                                 '如果数量小于10

%>

<script language="JavaScript">

<!--输出提示-->

alert("对不起,该新闻条数已经少于10条新闻条数!");

</script>

<%

else                                                     '如果数量不小于10

For i=0 To (item.Length-1)                              '逐一读取文件数据

Set title=item.Item(i).getElementsByTagName("title")         '显示title数据

Set link=item.Item(i).getElementsByTagName("link")      '显示link数据

'显示数据

Response.Write("<a href="""& link.Item(0).Text &""" target='_blank'>"& title.Item(0).Text &"</a><br>")

Next

end if

End Function

%>

………………………………

<td width="397" height="24" bgcolor="#9966FF"><span class="style1">本站最新新闻</span></td>

  </tr>

  <tr>

    <td bgcolor="#CCFFFF">

<%

call readrss("http://localhost/shu/12/1/12345.xml")               '显示读取的信息

%></td>

………………………………

<td height="25" bgcolor="#9966FF"><span class="style1">新浪最新新闻</span></td>

  </tr>

  <tr>

    <td bordercolor="#CCFFFF" bgcolor="#CCFFFF">

<%

call readrss("http://rss.sina.com.cn/news/allnews/astro.xml")    '显示读取新浪的信息

%></td>

12.3.5  信息详情显示文件

信息详情显示文件xianshi.asp的功能是用户单击信息标题超链接后,显示此条信息的详细数据。具体显示效果如图12-6所示。

图12-6  信息详情页面效果图

文件open.asp的主要代码如下所示:

<!--#include file="conn.asp"-->

……………………………………

<%

  id=request.QueryString("id")                                    '获取选择的信息编号

  set rs=server.createobject("adodb.recordset")

  sql="select * from article where newsid="&id&" "                '查询此编号的信息数据

  rs.Open sql,conn,1,1

%>

……………………………………

  <td width="593" height="21" bgcolor="#9966FF">

<div align="center"class="STYLE22"><%=rs("title")%>               <!--显示信息标题-->

</div>

</td>

<td bgcolor="#99CCFF">

<span class="STYLE23"><%=rs("content")%></font>                  <!--显示信息内容-->

</td>

…………………………………

12.3.6  信息添加页面

信息添加是本系统的重要模块之一,通过该功能可以实现系统信息的更新。添加系统信息的具体流程为:首先在表单页面中依次输入信息数据,然后单击【添加】按钮,系统将输入的信息添加到系统库中。从上面的流程中可以看出,信息添加功能页面由以下两部分构成。

1.信息添加表单页面部分

新闻添加页面是由文件addarticle.asp实现的,效果如图12-7所示。

图12-7  信息添加表单页面效果图

管理员输入信息数据后,单击【添加】按钮,经过数据处理程序处理后,数据将添加到数据库中。

2.数据保存部分

本部分主要实现数据处理,把管理员添加的数据添加到数据库中。在处理程序中要特别注意新闻内容的添加。为了使内容中的回车、空格和图片信息不丢失,在保存过程中要进行相应处理,能够使普通格式文本转换成网页格式添加到数据库中。在本系统中,添加图片格式是“[image]图片路径[/image]”的形式,其中图片路径可以是相对路径,也可以是绝对路径。上述功能是由文件save.asp实现的,其主要代码如下所示:

<%

'定义changechr函数,作用是将字符转换成网页能识别的字符

function changechr(str)             

changechr=replace(replace(replace(replace(str,"<","&lt;"),">","&gt;"),chr(13),"<br>")," ","&nbsp;")

changechr=replace(replace(replace(replace(changechr,"[image]","<img src="),"[b]","<b>"),"[red]",<font color

=CC0000>"),"[big]","<font size=7>")

changechr=replace(replace(replace(replace(changechr,"[/image]","></img>"),"[/b]","</b>"),"[/red]","</font>"),"[/big]","</font>")

end function

END IF

if request.form("txttitle")="" then                 '如果新闻标题为空

response.write "错误提示:请输入文章标题!"              '显示提示信息

response.end

end if

if request.form("txtcontent")="" then               '如果新闻内容为空

response.write "错误提示:请输入文章内容!"              '显示提示信息

response.end

end if

dim title

dim content

dim sql

dim articleid

dim from

title=request.form("txttitle")                     '获取新闻标题

from=request.form("Nfrom")                         '获取新闻来源

dim sql1

dim rs1

content=changechr(request.form("txtcontent"))       '将输入的内容转换成网页格式

'在数据库中增加一条文章记录

set rs=server.createobject("adodb.recordset")

sql="select * from article where (newsid is null)"

rs.open sql,conn,1,3

rs.addnew                                          '向数据库添加信息

rs("title")=title                                  '将新闻标题添加到数据库

rs("content")=content                              '将新闻内容添加到数据库

rs("Nfrom")=from                                   '将新闻来源添加到数据库

rs.update                                          '修改数据库

articleid=rs("newsid")

rs.close                                           '关闭记录集

set rs=nothing

conn.close

set conn=nothing                                   '清空记录集对象

response.Redirect("gai.asp")                       '来到指定页面,重新生成XML文件

%>

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论
    图书导读