海纳百川 用RSS特制新闻专区

技术与开发

RSS(Readlly Simple Syndication) 是在线共享内容的一种简易方式(用来分发和汇集网页内容),可以理解为资源共享模式的延伸。RSS搭建了一个信息共享的技术平台,使每个人都能成为信息的提供者。

我在网上学习的时候,发现一些网站总能得到别人网站的最新新闻,觉得比较神奇。我很想把这个效果应用到我的个人网站上,作个奥运的新闻专区,但不知道这个效果应该怎么实现?

这种效果非常实用,可以抓取别人网站最新的新闻,显示在自己的网站中,但前提条件是那些网站提供了RSS,网上不难找到。首先找到网站的RSS订阅地址,然后我们借助RSS开源工具Rome解析远程获得的RSS文件,最后对这些数据进行整理就可以发布到自己的网站上了。

第一步 新建RSS添加页面

打开开发工具MyEclipse,执行菜单“New”下的“Web Project”命令,导入所需的Jar包(Rome-0.9.jar、Jdom.jar、Jstl.jar、Standard.jar),再创建一个“search.jsp”的JSP页面,输入相关代码(代码下载地址:http://www.cpcw.com/bzsoft)。

第二步 封装RSS获得到的数据

打开工程,执行菜单“New”下的“Package”命令,创建一个包,命名为“org.yifeng.model”,然后创建临时的数据类DTO,名为“RssDTO.java”,它用于封装RSS得到的数据,输入相关代码(代码下载地址:http://www.cpcw.com/bzsoft)。

第三步 设计远程读取RSS功能

在工程文件下,新建一个包,命名为“org.yifeng.webapp.servlet”,然后新建一个类文件并命名为“RSSReaderServlet”,在其中输入代码,其中关键代码如下(完整代码下载地址:http://www.cpcw.com/bzsoft):

String URL = request.getParameter("url").trim();

/* 读取远程的一个RSS文件 */

SyndFeedInput input = new SyndFeed

Input();

SyndFeed feed = null;

try {

URL feedUrl = new URL(URL);

feed = input.build(new XmlReader(feedUrl));

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (FeedException e) {

e.printStackTrace();

}

List rssList = new ArrayList();

Iterator entryIter = feed.getEntries().iterator();

while (entryIter.hasNext()

第四步 创建新闻集合列表页面

新建一个用来创建新闻集合列表的 JSP页面,命名为“rssList.jsp”,这个页面显示RSS读取过来的数据列表,在其中输入代码:

<script type="text/javascript">

var loadDiv=parent.document.getEleme

ntById('loadDiv');

parent.document.getElementById('sele

ctButton').disabled = null;

loadDiv.style.display = "none";

</script>

<body>

<table cellspacing="0" cellpadding="0" width="100%">

<tbody>

<c:forEach var="rss" items="${reques

tScope.rssList}">

<tr bgcolor="#eeeeee">

<td style="PADDING-LEFT: 5px; PADDING-TOP: 5px"

height="30"><b><c:out value="${rss.title}" escapeXml="false"/></b></td>

</tr>

<tr bgcolor="#eeeeee">

<td

style="PADDING-LEFT: 5px"><c:out value="${rss.description}" escapeXml=

"false" /></td>

</tr>

<tr bgcolor="#eeeeee">

<td style="PADDING-LEFT: 5px; PADDING-TOP: 5px"><a

href="<c:out value='${rss.link}'/>"

target="_blank"><c:out value="${rss.link}"/></a></td>

style="PADDING-LEFT: 5px;PADDING-BOTTOM: 5px;PADDING-TOP: 5px"><span>发布时间:<c:out value="${rss.publishedDate}"/></span></td>

完成上述功能后,编译并运行此程序,然后在地址栏中输入http://localhost:8080/RSS(例如输入新浪的RSS地址:http://rss.sina.com.cn/news/marquee/ddt.xml),即可得到想要的效果图了。

总结

通过本例的学习,读者朋友了解了如何远程调用RSS,利用这种技术我们可以任意抓取别人网站的新闻显示在自己网站上,轻轻松松就可以制作出奥运新闻专区。