`
longgangbai
  • 浏览: 7339899 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

采用Rsslibj的生成和解析RSS1.0

 
阅读更多

 

RSS是一个标准的XML文件,Rss阅读器可以读取这个XML文件获得文章的信息,使用户可以通过Rss阅读器

而非浏览器阅读Blog,我们只要动态生成这个XML文件便可以了。RSSLibJ是一个专门读取和生成RSS的小

巧实用的Java库,大小仅25k,可以从http://sourceforge.net/projects/rsslibj/下载rsslibj-

1_0RC2.jar和它需要的EXMLjar两个文件,然后复制到web/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

  

EXML.jar下载地址:http://rsslibj.cvs.sourceforge.net/rsslibj/rsslibj/lib/EXML.jar?view=log

 

 

package com.easyway.rss.app;
import java.io.StringReader;
import java.util.List;

import com.rsslibj.elements.Channel;
import com.rsslibj.elements.Item;
import com.rsslibj.elements.RSSReader;

import electric.xml.ParseException;
/***
 * rss是什么?     
 *     rss是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication 的简称,通常在
 *时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最
 *新更新,其实是一种能跨平台的服务于用户的简单xml文件协议.
 *
 *为什么要RSS?
 *              在这个网络知识繁华的岁月,每个人都希望能快速的知道自己关心的知识,比如我关心x站的x
 * 一个栏目,我就可以订阅该栏目的rss,如有文章发布,我就能及时的看到更新...中间的商机我就不再赘言了.
 * 
 * 
 * 目前网上的使用主要分为以下几种:
 * 1.不同网站中blog的迁移
 *    如ITEye的blog到ITpub blog数据的迁移
 * 2.订阅特定网站的信息的更新
 *    如果订阅特定的网站的blog更新
 * 3.RSS在线阅读器的使用。
 *    通过手机等通讯工具在线阅读最新信息
 * 
 * 
 * 
 * RSS文件结构
 * 以下以RSS2.0为例说明.rss文件的核心就是xml文件,所以首先必须符合xml的构架格式.
 *  它是以
 *<rss version="2.0">...</rss>
 *这种Root形式的格式.
 *       rss有一<channel>的子节点,它包含了文件的内容,在<channel>的里面,有好几个元素用以描述信息.
 * 在站点http://backend.userland.com/rss上有详细的内容,比如以下:
 *  title:标题,经常还有资料的来源信息
 *  link:web站点的url地址
 * description:对网站的一个简单描述.
 *  每条信息用以<item>元素表示,它被包含在<channel>节点里面,每个<channel>可以有多个<item>,每个<item>节点是真正的节点信息:
 *  title:列表项目的标题
 * link:列表项目的web url地址,
 * description:对列表项目的简短说明,
 * author:列表信息的作者
 * pubDate:发布时间.
 *  这里,有一个很重要的节点就是pubDate的格式,它必须符合RFC 822的标准,查看细节 .开始于三个字母长度的星期,然后是每月的
 *    天数次序,然后是3个字母的月份,然后是年份,然后是具体的时间,最后是时区.
 * 
 * 
 * @Title: RSSLibJ的使用
 * @Description: 使用RSSLibJ生成相关的RSS文件
 * @Copyright:Copyright (c) 2011
 * @Company:易程科技股份有限公司
 * @Date:2012-2-6
 * @author longgangbai
 * @version 1.0
 */
public class RSSLibJMain {
	    public static void main(String[] args) 
	            throws InstantiationException, ClassNotFoundException, 
	            IllegalAccessException{
	        try {
	          //网络获取RSS的方式
	          // URL url=new URL("http://topmanopensource.iteye.com/rss");
	  	      // InputStream inputstream=url.openStream();
	          // BufferedReader reader= new BufferedReader(new InputStreamReader(inputstream));
	        	
	        	//获取自定义的RSS格式(备注自定义的RSS版本为V1.0)
	        	String context=writerRSS();
	        	readerRSS(context);
			} catch (Exception e) {
				e.printStackTrace();
			}
	      
	    }

	    /**
	     * 读取rss的信息
	     * @param context
	     * @throws ParseException
	     */
		private static void readerRSS(String context) throws ParseException {
			StringReader reader=new StringReader(context);
			//创建RSS阅读对象的
			RSSReader rssReader=new RSSReader();
			//设置读取内容
			rssReader.setReader(reader);
			//获取rss相关的信息
			Channel channel=rssReader.getChannel();
			String description=channel.getDescription();
			System.out.println("description="+description);
			String link=channel.getLink();
			System.out.println("link="+link);
			//此处我们紧紧关注item
			List<Item> itemList=channel.getItems();
	      if(itemList!=null){
			  for (Item item : itemList) {
				  String slink=item.getLink();
				  String title=item.getTitle();
				  String author=item.getDcContributor()==null?item.getDcCreator():item.getDcContributor();
				  String descption=item.getDescription();
				 
				  System.out.println(title +" "+slink +" "+author +" "+descption);
			  }
	      }
		}

	    /**
	     * 创建一个自定义的RSS的
	     * @return
	     * @throws InstantiationException
	     * @throws IllegalAccessException
	     * @throws ClassNotFoundException
	     */
		private static String writerRSS() throws InstantiationException,
				IllegalAccessException, ClassNotFoundException {
			Channel channel=new Channel();
	        channel.setDescription("This is my sample channel.");
	        channel.setLink("http://localhost/");
	        channel.setTitle("My Channel");
	        channel.setImage("http://localhost/", 
	                "The Channel Image", 
	                "http://localhost/foo.jpg");
	        channel.setTextInput("http://localhost/search", 
	                "Search The Channel Image", 
	                "The Channel Image", 
	                "s");
	        channel.addItem("http://localhost/item1",
	                "The First Item covers details on the first item>",
	                "The First Item")
	                .setDcContributor("Joseph B. Ottinger");
	        channel.addItem("http://localhost/item2",
	                "The Second Item covers details on the second item",
	                "The Second Item")
	                .setDcCreator("Jason Bell");
	        System.out.println("The feed in RDF: ");
	        
	        System.out.println(channel.getFeed("rdf"));
	        
	        return channel.getFeed("rdf");
		}

}

 

分享到:
评论

相关推荐

    rsslibj-1_0RC2包(BUG已修正)

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

    RSSLIBJ的API文档及源代码

    - **RSS解析**: RSSLIBJ可以解析RSS 0.91, 0.92, 0.94, 1.0, 2.0 和 Atom 0.3, 1.0 格式的feed。 - **RSS生成**: 提供API生成新的RSS feed,包括添加、删除和修改频道和项。 - **RSS兼容性**: 支持多种RSS版本和...

    RSSLIBJ相关JAR包

    然后,可以通过实例化RSSLIBJ提供的类,如`RSSChannel`和`RSSItem`,来构建或解析RSS feed。例如,可以使用`RSSReader`类从URL读取RSS源,然后遍历`RSSChannel`的`items`列表,获取每个条目的详细信息。此外,`...

    java_rss.rar_EXML.jar _RSSLibJ _rome jar_rome.j

    在RSS开发中,EXML可以帮助解析和生成RSS feed的XML结构,提供了一种高效的替代方法,相比使用DOM或SAX解析器,EXML在处理XML文档时更加简洁和高效。 2. **RSSLibJ-1.0RC2.jar**:RSSLibJ是一个Java库,专门设计...

    rsslibj-1_0RC2.jar EXML.jar

    总的来说,RSSLibJ-1_0RC2.jar和EXML.jar是Java开发中处理RSS和XML的实用工具,它们简化了这两项任务,使开发者能够更专注于应用程序的其他核心功能。通过合理的使用,可以构建出高效、功能丰富的RSS阅读和处理应用...

    RSS是RSS的jar包

    使用此类库,开发者可以轻松地与RSS源进行交互,例如获取、解析和生成RSS文档。 2. **dom4j.jar**: Dom4j是一个强大的Java XML API,它提供了全面而灵活的DOM,SAX和JDOM的集成。在处理RSS时,dom4j可以帮助解析RSS...

    rsslibj-1_0RC2.jar

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

    JAVA xml RSS

    标题 "JAVA xml RSS" 暗示我们正在讨论如何在Java环境中处理XML数据,并且可能与RSS(Really Simple Syndication)格式的解析和生成有关。RSS是一种用于发布新闻和其他经常更新内容的XML标准,常用于博客、新闻站点...

    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