`

利用RSSLibJ读取RSS

阅读更多
RSS是一个标准的XML文件,Rss阅读器可以读取这个XML文件获得文章的信息,使用户可以通过Rss阅读器而非浏览器阅读Blog,我们只要动态生成这个XML文件便可以了。RSSLibJ是一个专门读取和生成RSS的小巧实用的Java库,大小仅25k,可以下载rsslibj-1_0RC2.jar和它需要的EXMLjar两个文件,然后复制到/WEB-INF/lib/下。
 
 

 

读取新浪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相关JAR包

    RSSLIBJ是一个Java库,专门用于处理RSS(Really Simple Syndication) feeds。...通过EXML.jar和rsslibj-1_0RC2.jar这两个库,开发者可以高效地读取、创建和修改RSS内容,从而增强其应用程序的信息获取和分发能力。

    RSSLIBJ的API文档及源代码

    **RSSLIBJ API 文档及源代码详解** RSSLIBJ 是一个专门用于处理RSS(Really ...通过深入理解RSSLIBJ的API文档和源代码,开发者可以有效地利用这个库来构建高效、稳定的RSS相关应用,满足多样化的信息聚合和发布需求。

    java_rss.rar_EXML.jar _RSSLibJ _rome jar_rome.j

    它提供了一系列接口和类,用于读取、写入、创建和更新RSS feeds。开发者可以使用RSSLibJ来订阅RSS源,获取新的feed项,甚至可以创建自己的RSS feed。这个库简化了RSS相关的编程工作,让开发者无需深入了解RSS规范的...

    rsslibj-1_0RC2.jar EXML.jar

    这两个库的结合使用,意味着开发者可以构建一个完整的RSS阅读器应用,从网络上抓取RSS feeds,利用EXML进行XML数据的解析,然后通过RSSLibJ处理成易于操作的对象模型,展示给用户。这种应用程序常见于新闻聚合器、...

    rsslibj-1_0RC2.jar

    rsslibj-1_0RC2.jar 使用这个包可以很方便的生成 rss 文件

    RSS是RSS的jar包

    6. **rsslibj-1_0RC2.jar**: 这是一个RSS库的早期版本,可能包含了处理RSS feed的类和方法,比如解析RSS源、创建新的RSS项目、编码和解码RSS数据等功能。 7. **Rss.java**: 这是一个源代码文件,很可能包含了一个...

    rsslibj-1_0RC2包(BUG已修正)

    rsslibj-1_0RC2版本很久没有更新了,陈旧,存在BUG,项目中要用RSS,研究了下此包源代码,找到BUG并修复了。实现的RSS页面跟http://go.microsoft.com/fwlink/?LinkId=128474(今日焦点-MSN中文网 )实现的效果差不多...

    JAVA xml RSS

    3. `rsslibj-1_0RC2.jar`: 这可能是RSS库的另一个版本,可能是`rsslib.jar`的早期版本或者一个不同分支。"RC2"代表“Release Candidate 2”,意味着它是正式发布前的第二个候选版本,可能包含了一些修复和改进。 4....

    Java如何实现RSS.pdf

    RSSLibJ是一个轻量级的Java库,专门用于处理RSS的读取和生成,适用于在Java应用中创建RSS feed。 首先,我们需要了解RSS的基本结构。RSS通常包含以下几个主要元素: 1. **Channel**:频道,代表一个信息源,如一个...

    J2EE开源框架

    - **RSS 工具**:RSSLibJ 和 RSSLib4J 分别支持读取和生成 RSS 文件,方便实现信息聚合。 2. **模型层框架** - **持久层框架**:Hibernate 是一款流行的 ORM(对象关系映射)框架,它能够将 Java 对象映射到...

    ROME Tag Library-开源

    rometaglib是用于流行的RSS API(称为Rome)的简单JSP taglib包装器。

    E X ML.jar包

    EXML.jar 解释xml 的包,用 rsslibj-1_0RC2.jar 包的时候这个包是必需的

Global site tag (gtag.js) - Google Analytics