国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
OpenSource RSS實現(xiàn)類庫-Java-

Java開源RSS組件包(Java Open Source RSS Lib Packages)

* RSSLibJ

RSSLibJ是一個專門讀取和生成RSS的小巧實用的Java庫,大小僅25k。

* RSSLib4J

RSSLib4J 是一套用于從RSS Feed解析和檢索信息的Java API。它支持RSS version0.9x ,1.0和2.0規(guī)范,Doublin內(nèi)核和Syndication名字空間。

* BlogBridge

BlogBridge是一個RSS閱讀器/合成器,專為閱讀和處理大量RSS feed的人而提供。這些典型的有Weblogs, 但也有其它類型的RSS feed。

* Flock

Flock是一種RSS/RDF用Java編寫的信息集成器。它是一種server-side應(yīng)用程序,帶有一個瀏覽器。

* RSSOwl

RSSOwl 是一個完全用 Java 的SWT快速圖形庫開發(fā)的 RSS / RDF / Atom 新聞閱讀器。按類別讀取新聞,分類存儲收藏信息,導(dǎo)出為 PDF / RTF / HTML / OPML,從 OPML格式導(dǎo)入,支持全文本搜索,使用Internet瀏覽器。

* Informa

Informa提供一個基于Java的RSS類庫.它支持導(dǎo)出,導(dǎo)入,存儲,搜索等。

* Jena

Jena 是一個由HP實驗室開發(fā)的表示和處理半結(jié)構(gòu)化數(shù)據(jù)(主要是基于RDF的管理、查詢等)的Java開源項目。目前是Jena2版本,Jena1做到了支持 RDF的數(shù)據(jù)表達(dá)、解析、查詢(采用RDQL)和簡單的推理,Jena2的目標(biāo)在支持本體(包括DAML、RDFS和OWL的應(yīng)用程序接口API)。

* RSS Reader

RSS Reader提供了一個Java API和一個圖形客戶端來分析與顯示RSS格式的內(nèi)容。

* Schema

Schema是一個利用RDF與RDF Schema進(jìn)行存儲,查詢,討論(reasoning )的Java開源框架.Sesame既可以當(dāng)作RDF與 RDF Schema的數(shù)據(jù)庫或當(dāng)作一個Java 庫用來為應(yīng)用程序提供RDF的功能.

* RSS Notifier

RSS Notifier是一個RSS Feed閱讀器,它設(shè)計成一個Window托盤程序隨Windows的啟動一起加載.它用基于使用RSS文件的新聞訂閱方式來閱讀即時新聞.

* Sesame

inferencing是一個用于存儲,查詢,解析RDF的Java框架.它可被配置作為一個web服務(wù)器或當(dāng)一個Java包來使用.它的特點包括3種查詢語言(SeRQL, RQL, RDQL),支持內(nèi)存(RAM),磁盤(disk),與RDBMS存儲.

* FaceRSS

FaceRSS是一個簡單的JSF組件,它可以從指定的RSS url讀取新聞并展示出來。 FaceRSS基于rsslib4j這個開源包進(jìn)行構(gòu)建所以它支持RSS 0.9x,1.0,和2.0。

* ROME

ROME是一組Atom/RSS工具類它使得用Java來操作大部份syndication格式變得更加容易:
# RSS 0.90
# RSS 0.91 Netscape
# RSS 0.91 Userland
# RSS 0.92
# RSS 0.93
# RSS 0.94
# RSS 1.0
# RSS 2.0
# Atom 0.3
# Atom 1.0
ROME不僅包括各種syndication feeds的解析器與生成器,而且還包括能夠把一種格式轉(zhuǎn)換成另外一種格式的轉(zhuǎn)換器。

* HORRORss

HORRORss是一個簡單的RSS(RSS0.9x,RSS.0,RSS2.0)解析包。它支持Atom feeds,但并沒有完全符合Atom規(guī)范。只能支持一些基本的feed元素:title,link,author,和description。

上面我們看到了一份 RSS Lib 列表,Java 的類庫就是豐富,而且都是開源的。
這么多讓我眼花繚亂,用哪個呢?再轉(zhuǎn)貼一份評測吧,這篇評測來自:http://www.yangzhe.net/blog/index.php/20050915/21.html

我的目標(biāo)是做一個簡單的portlet,每次讀取新浪的RSS站點顯示最新的新聞條目。

花了一個下午,去sourceforge和google 上搜索 opensource 的 java rss lib,還真有不少(順便提一下,sourceforget的搜索真的很爛)。簡單過濾以后,覺得以下三個類庫比較有搞頭。Rome 、rssutils和rsslib4j。具體的評測如下:

一. Rome

Rome 是 java.net 上的一個開源項目,現(xiàn)在的版本是0.5。為什么叫Rome呢,按它的介紹上的說法,有個“條條大路通羅馬”的意思,有些RSS的意味。Rome可能是 sun 公司從自己某個子項目中抽離出來的,package和類的命名就象j2sdk一樣感覺規(guī)范。功能上支持RSS的所有版本及 Atom 0.3(Atom是和RSS類似的一種內(nèi)容聚合的方式)。Rome 本身是提供API和功能實現(xiàn),其下獨立出一個 rome-fetcher 項目,專門用來讀取RSS內(nèi)容。正和我意啊。

參照 fetcher 上的范例,解析 RSS 相當(dāng)簡單,代碼片斷如下:

代碼
  1. FeedFetcher fetcher = new HttpURLFeedFetcher();   
  2. SyndFeed feed = fetcher.retrieveFeed(feedUrl);   
  3. System.out.println(feedUrl + ” has a title: ” + new String(feed.getTitle().getBytes(”iso8859-1″), “utf-8″) + ” and contains “ + feed.getEntries().size() + ” entries.”);   
  4. for (Iterator iter = feed.getEntries().iterator(); iter.hasNext(); ) {   
  5. SyndEntry entry = (SyndEntry) iter.next();   
  6. System.out.println(”" + entry.getTitle() + “[” + entry.getPublishedDate() + “]”);   
  7. }  

 

為什么用 new String(feed.getTitle().getBytes(”iso8859-1″), “utf-8″) 進(jìn)行轉(zhuǎn)碼,是因為Rome來解析 新浪新聞 RSS的時候試圖從 URLConnection 的 header 中得到編碼信息,否則總是用 iso8859-1。而新浪的RSS response header 中不包含編碼信息,所以要做一番轉(zhuǎn)碼。另外還有就是 entry.getPubDate() 也將返回null,因為Rome 用多種pattern 去試圖解析時間信息,新浪的時間格式還是符合RFC822的,但是Rome 使用SimpleDateFormat 來解析時間,它忘記了一點,就是 SimpleDateFormat的解析是關(guān)聯(lián)于 Locale 的,所以由于我本地locale是China,SimpleDateFormat的parse方法解析不出英文的時間字符。以上代碼前加 Locale.setDefault(Locale.Englisth) 可以搞定,但總覺得不爽。

如果也不想轉(zhuǎn)碼的話,Rome 還提供了一個 XmlReader 的類,通過分析 header 和 xml 內(nèi)容推斷 encoding,修改 HttpURLFeedFetcher 的源碼 :

代碼
  1. // 改變 InputStreamReader , 換用 XmlReader   
  2. //InputStreamReader reader = new InputStreamReader(is, ResponseHandler.getCharacterEncoding(connection));   
  3. XmlReader reader = new XmlReader(connection);   
  4. SyndFeedInput input = new SyndFeedInput();   
  5. SyndFeed feed = input.build(reader);  

 

那么中文不用轉(zhuǎn)碼也能正確顯示了,不過修改源碼后我再解析 百度新聞 RSS 的時候,底層的JDOM卻會抱錯說xml 格式不正確。也許Rome的開發(fā)者也遇到過這樣的問題,所以才沒有使用 XmlReader。

二. rssutils

它是一個工具包,sun 的 develope站點上有文章 RSS Utilities: A Tutorial 專門介紹用taglib 顯示RSS內(nèi)容,附帶的可以下載這個工具包,但我從網(wǎng)上搜索不到它的出處,自然也無法看到它的源碼。但從反編譯的代碼來看,也是sun公司內(nèi)部高手所做,設(shè)計精巧,代碼簡練。實現(xiàn)一個handler,用sax的方式解析xml內(nèi)容,handler內(nèi)部用反射和javabean的機(jī)制構(gòu)造RSS元素對象并賦值。代碼片斷如下:

代碼
  1. RssParser parser = new RssParserImpl();   
  2. Rss rss = parser.parse(new URL(url));   
  3. System.out.println(rss.getChannel().getTitle());   
  4. for (Iterator iter = rss.getChannel().getItems().iterator(); iter.hasNext();) {   
  5. Item item = (Item)iter.next();   
  6. System.out.println(”" + item.getTitle() + ” ” + item.getPubDate());   
  7. }  

 

如上所示,代碼也是相當(dāng)簡單,沒有轉(zhuǎn)碼的需求,時間也正確顯示(因為根本沒做分析,當(dāng)字符串直接返回)。但是該工具包并非真正對外公布,代碼中有些不嚴(yán)謹(jǐn)?shù)牡胤?,如System.out的輸出,很不爽。而且如果 RSS 的 xml內(nèi)容如果缺少部分不常用元素,它也會printStackTrace一大串,服了它了。另外還有一個大問題,就是當(dāng)我用它解析 百度新聞的時候,直接就報錯:org.xml.sax.SAXParseException: 字符轉(zhuǎn)換錯誤:“Unconvertible UTF-8 character beginning with 0xb0”。網(wǎng)上查了查,可能是 java 修改過的 UTF-8 和標(biāo)準(zhǔn) UTF-8 些微不兼容導(dǎo)致。詳情參看 Java 平臺中的增補(bǔ)字符 一文。

三. rsslib4j

rsslib4j 是 sourceforget 上的項目,主頁是 http://sourceforge.net/projects/rsslib4j,現(xiàn)在最新的版本是0.2,才0.2,可是開發(fā)狀態(tài)卻已經(jīng)是穩(wěn)定產(chǎn)品化了。同樣支持所有RSS版本。

rsslib4j 解析 RSS 的方式和 rssutils 一樣,我看了看源碼,設(shè)計比較簡單,代碼可讀性一般,大量使用if。代碼片斷如下:

代碼
  1. RSSHandler hand = new RSSHandler();   
  2. RSSParser.parseXmlFile(new URL(url), hand, false);   
  3. RSSChannel ch = hand.getRSSChannel();   
  4. System.out.println(ch.toString());   
  5. LinkedList lst = hand.getRSSChannel().getItems();   
  6. for (int i = 0; i RSSItem itm = (RSSItem) lst.get(i);   
  7. System.out.println(itm.toString());   
  8. }  

 

看起來也是相當(dāng)清晰易懂,執(zhí)行結(jié)果也和rssutils一樣,不過用它來解析 百度新聞 卻不會出現(xiàn) rssutils 的utf-8編碼錯誤,真是奇怪,兩者都是調(diào)JAXP的 SAXParser 。不過它的代碼也有bug,不能解析出 channel 的一些信息,查看源碼,有點簡單邏輯錯誤,修正后解決。想寫封email給項目開發(fā)者可惜英文不行,通過cvs去commit一下也嫌麻煩,作罷。

總結(jié)

Rome:
優(yōu) - 1)可擴(kuò)展性好,有前途。2)功能強(qiáng)大,除了用來解析RSS,還可以聚合和構(gòu)造RSS。
劣 - 1)兼容性待加強(qiáng),2)綁定jdom。為什么不喜歡 jdom呢,因為它api 老變,還很絕,搞得不兼容。

rssutils:
優(yōu) - 1)代碼設(shè)計精妙,值得學(xué)習(xí)。2)附帶 taglib 實現(xiàn),直接可在 jsp 中應(yīng)用。
劣 - 1)沒有源碼。 2)兼容性有待加強(qiáng)。 3)功能較弱,只能用來解析RSS,沒有聚合和構(gòu)造RSS功能。

rsslib4j:
優(yōu) - 1)簡單有效,體積小。2)兼容性不錯。
劣 - 1)有小bug。2)功能較弱,只能用來解析RSS,沒有聚合和構(gòu)造RSS功能。

編輯選擇: rsslib4j
我只用來讀讀新浪新聞,rsslib4j 夠用就好,不過要自己修改和編譯源碼。
另外我還找到了一個ThinFeeder: ThinFeeder is an open source software that aims to provide a cross-platform, powerful and tiny RSS / Atom (currently RSS 0.9x, RSS 1.0 / RDF, RSS 2.0 and Atom 0.3) aggregator for desktop, using the Java development language. It has a few goals that wants to make the reading news experience the most pleasant possible:

* Anti-aliasing support on any Operating System
* Skins support
* Multi-language support:
o Catalan
o Dutch
o English
o Esperanto
o French
o German
o Lithuanian
o Portuguese (Brazil)
o Spanish
o Swedish

沒看到 Chinese,那就算了。好了,就用 Rome 了。條條大道通羅馬~,只要寫一套代碼就能輸出下面各種格式:

代碼
  1. rss_0.9 (RSS 0.90)   
  2. rss_0.91N (RSS 0.91 Netscape)   
  3. rss_0.91U (RSS 0.91 Userland)   
  4. rss_0.92 (RSS 0.92)   
  5. rss_0.93 (RSS 0.93)   
  6. rss_0.94 (RSS 0.94)   
  7. rss_1.0 (RSS 1.0)   
  8. rss_2.0 (RSS 2.0)   
  9. atom_0.3 (Atom 0.3)   
  10. atom_1.0 (Atom 1.0)   
  11.   
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java rss lib 評測
JAVA的RSS處理
web2.0 總結(jié)
全面了解和解析Blog和RSS的含義
一個好玩blog工具-POQUE,支持中文的哦。 - 狗車志
用JSP實現(xiàn)基于Web的RSS閱讀器
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服