Rsslibjを用いた生成と解析RSS 1.0

6510 ワード


RSSは標準XMLファイルであり、RssリーダーはこのXMLファイルを読み取り、記事の情報を得ることができ、ユーザーはRssリーダーを通して記事を得ることができる.
ブラウザでBlogを読むのではなく、このXMLファイルを動的に作成すればいいです.RSSLibJはRSSを専門に読み取り、生成するための小さいサイズです.
器用で実用的なJavaライブラリ、サイズはわずか25 kで、http://sourceforge.net/projects/rsslibj/からrsslibjをダウンロードすることができます.
1_0 RC 2.jarと必要なEXMLjarの2つのファイルをウェブ/WEB-INF/lib/下にコピーします.
  
rsslibj-1_0 RC 2.jarダウンロードアドレス:http://sourceforge.net/project/downloading.php?group_id=71153&use_mirror=nchc&filename=rsslibj-1_0 RC 2.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");
		}

}