`

利用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包

    例如,可以使用`RSSReader`类从URL读取RSS源,然后遍历`RSSChannel`的`items`列表,获取每个条目的详细信息。此外,`RSSWriter`类可以帮助将RSS结构写入XML文件或流。 在实际应用中,RSSLIBJ可以用于开发新闻聚合...

    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处理成易于操作的对象模型,展示给用户。这种应用程序常见于新闻聚合器、...

    RSS是RSS的jar包

    - 读取RSS feed:解析XML文档,提取频道信息和条目详情。 - 创建RSS feed:构造RSS结构,添加频道和条目信息,生成XML输出。 - 更新RSS feed:修改现有RSS feed的内容,如添加、删除或更新条目。 - 集成RSS功能:将...

    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 对象映射到...

Global site tag (gtag.js) - Google Analytics