RSS是一个标准的XML文件,Rss阅读器可以读取这个XML文件获得文章的信息,使用户可以通过Rss阅读器而非浏览器阅读Blog,我们只要动态生成这个XML文件便可以了。RSSLibJ是一个专门读取和生成RSS的小巧实用的Java库,大小仅25k,可以下载rsslibj-1_0RC2.jar和它需要的EXMLjar两个文件,然后复制到/WEB-INF/lib/下。
rsslibj-1_0RC2.jar下载地址:http://sourceforge.net/project/downloading.php?group_id=71153&use_mirror=nchc&filename=rsslibj-1_0RC2.jar&27763931
读取新浪RSS的一个例子,结合Jsf。
页面:
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@page contentType="text/html;charset=gb18030"%> <f:view> <html> <body> <h:form> <h3>RSS Reader</h3> 请输入RSS地址: <h:inputText value="#{rssReader.rssAddress }" id="rssAddress" converterMessage="请输入一个正确的Rss地址!" style="width:280px;"> </h:inputText> <h:commandButton value="提交" action="#{rssReader.readRss }"></h:commandButton> <br> <br> <h:message for="rssAddress" style="color:red;"></h:message> </h:form> <br> <br> 从 <h:outputText value="#{rssReader.rssAddress }"></h:outputText> 获取的内容: <br> <h:form> <h:dataTable value="#{rssReader.items }" var="item" style="font-size:13px;" border="1"> <h:column> <h:outputText value="#{item.title }"></h:outputText> </h:column> <h:column> <h:outputLink value="#{item.link }"> <h:outputText value="#{item.link }"></h:outputText> </h:outputLink> </h:column> </h:dataTable> </h:form> </body> </html> </f:view>
RSSReader.java:
package com.rss; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Properties; import com.rsslibj.elements.Channel; import com.rsslibj.elements.Item; import com.rsslibj.elements.RSSReader; import electric.xml.ParseException; public class RssReader { private static final String urlString = "http://rss.sina.com.cn/news/marquee/ddt.xml"; private List<Item> items; private String rssAddress; private String proxyHost = "paicproxy2"; private String proxyPort = "8080"; public String getRssAddress() { return this.rssAddress; } public void setRssAddress(String rssAddress) { this.rssAddress = rssAddress; } public List<Item> getItems() { return this.items; } /** * 设置代理 */ public void setProxy(String proxyHost,String proxyPort) { // 设置代理 Properties systemSettings = System.getProperties(); systemSettings.put("http.proxyHost", proxyHost); systemSettings.put("http.proxyPort", proxyPort); System.setProperties(systemSettings); } /** * 读取RSS。 * @param url * @throws IOException * @throws ParseException */ public void readRss() throws IOException, ParseException { setProxy(proxyHost, proxyPort); URL __url = new URL(this.rssAddress); HttpURLConnection conn = (HttpURLConnection) __url.openConnection(); InputStream in = conn.getInputStream(); BufferedReader bufReader = new BufferedReader(new InputStreamReader(in,"utf-8")); RSSReader rssReader = new RSSReader(bufReader); Channel channel = rssReader.getChannel(); this.items = channel.getItems(); } /** * 打印获取的RSS内容。 * @param urlString */ public void test(String urlString) { setProxy(urlString, urlString); try { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream is = conn.getInputStream(); StringBuilder sBuilder = new StringBuilder(); String line = null; BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8")); while ((line = reader.readLine()) != null) { sBuilder.append(line).append("\n"); } System.out.println(sBuilder.toString()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
faces-config.xml:
<?xml version="1.0"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> <faces-config> <managed-bean> <managed-bean-name>rssReader</managed-bean-name> <managed-bean-class> com.rss.RssReader </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config>
效果:
相关推荐
RSSLIBJ是一个Java库,专门用于处理RSS(Really Simple Syndication) feeds。...通过EXML.jar和rsslibj-1_0RC2.jar这两个库,开发者可以高效地读取、创建和修改RSS内容,从而增强其应用程序的信息获取和分发能力。
**RSSLIBJ API 文档及源代码详解** RSSLIBJ 是一个专门用于处理RSS(Really ...通过深入理解RSSLIBJ的API文档和源代码,开发者可以有效地利用这个库来构建高效、稳定的RSS相关应用,满足多样化的信息聚合和发布需求。
它提供了一系列接口和类,用于读取、写入、创建和更新RSS feeds。开发者可以使用RSSLibJ来订阅RSS源,获取新的feed项,甚至可以创建自己的RSS feed。这个库简化了RSS相关的编程工作,让开发者无需深入了解RSS规范的...
这两个库的结合使用,意味着开发者可以构建一个完整的RSS阅读器应用,从网络上抓取RSS feeds,利用EXML进行XML数据的解析,然后通过RSSLibJ处理成易于操作的对象模型,展示给用户。这种应用程序常见于新闻聚合器、...
rsslibj-1_0RC2.jar 使用这个包可以很方便的生成 rss 文件
6. **rsslibj-1_0RC2.jar**: 这是一个RSS库的早期版本,可能包含了处理RSS feed的类和方法,比如解析RSS源、创建新的RSS项目、编码和解码RSS数据等功能。 7. **Rss.java**: 这是一个源代码文件,很可能包含了一个...
rsslibj-1_0RC2版本很久没有更新了,陈旧,存在BUG,项目中要用RSS,研究了下此包源代码,找到BUG并修复了。实现的RSS页面跟http://go.microsoft.com/fwlink/?LinkId=128474(今日焦点-MSN中文网 )实现的效果差不多...
3. `rsslibj-1_0RC2.jar`: 这可能是RSS库的另一个版本,可能是`rsslib.jar`的早期版本或者一个不同分支。"RC2"代表“Release Candidate 2”,意味着它是正式发布前的第二个候选版本,可能包含了一些修复和改进。 4....
RSSLibJ是一个轻量级的Java库,专门用于处理RSS的读取和生成,适用于在Java应用中创建RSS feed。 首先,我们需要了解RSS的基本结构。RSS通常包含以下几个主要元素: 1. **Channel**:频道,代表一个信息源,如一个...
- **RSS 工具**:RSSLibJ 和 RSSLib4J 分别支持读取和生成 RSS 文件,方便实现信息聚合。 2. **模型层框架** - **持久层框架**:Hibernate 是一款流行的 ORM(对象关系映射)框架,它能够将 Java 对象映射到...
rometaglib是用于流行的RSS API(称为Rome)的简单JSP taglib包装器。
EXML.jar 解释xml 的包,用 rsslibj-1_0RC2.jar 包的时候这个包是必需的