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");
}
}