<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    OMG,到底在尋找什么..................
    (構造一個完美的J2EE系統所需要的完整知識體系)
    posts - 198,  comments - 37,  trackbacks - 0

    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規范,Doublin內核和Syndication名字空間。

    * BlogBridge

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

    * Flock

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

    * RSSOwl

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

    * Informa

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

    * Jena

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

    * RSS Reader

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

    * Schema

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

    * RSS Notifier

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

    * Sesame

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

    * FaceRSS

    FaceRSS是一個簡單的JSF組件,它可以從指定的RSS url讀取新聞并展示出來。 FaceRSS基于rsslib4j這個開源包進行構建所以它支持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的解析器與生成器,而且還包括能夠把一種格式轉換成另外一種格式的轉換器。

    * HORRORss

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

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

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

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

    一. Rome

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

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

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

    如果也不想轉碼的話,Rome 還提供了一個 XmlReader 的類,通過分析 header 和 xml 內容推斷 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);??

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

    二. rssutils

    它是一個工具包,sun 的 develope站點上有文章 RSS Utilities: A Tutorial 專門介紹用taglib 顯示RSS內容,附帶的可以下載這個工具包,但我從網上搜索不到它的出處,自然也無法看到它的源碼。但從反編譯的代碼來看,也是sun公司內部高手所做,設計精巧,代碼簡練。實現一個handler,用sax的方式解析xml內容,handler內部用反射和javabean的機制構造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. }??

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

    三. rsslib4j

    rsslib4j 是 sourceforget 上的項目,主頁是 http://sourceforge.net/projects/rsslib4j,現在最新的版本是0.2,才0.2,可是開發狀態卻已經是穩定產品化了。同樣支持所有RSS版本。

    rsslib4j 解析 RSS 的方式和 rssutils 一樣,我看了看源碼,設計比較簡單,代碼可讀性一般,大量使用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. }??

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

    總結

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

    rssutils:
    優 - 1)代碼設計精妙,值得學習。2)附帶 taglib 實現,直接可在 jsp 中應用。
    劣 - 1)沒有源碼。 2)兼容性有待加強。 3)功能較弱,只能用來解析RSS,沒有聚合和構造RSS功能。

    rsslib4j:
    優 - 1)簡單有效,體積小。2)兼容性不錯。
    劣 - 1)有小bug。2)功能較弱,只能用來解析RSS,沒有聚合和構造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. ??
    posted on 2007-01-13 15:28 OMG 閱讀(2193) 評論(0)  編輯  收藏 所屬分類: Ajax/RSS/Tag

    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風云人物

    文檔

    朋友

    相冊

    經典網站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线看片免费不卡人成视频| 国产午夜无码片免费| 亚洲日本久久久午夜精品| 亚洲一区二区三区在线 | 久久久久女教师免费一区| 中文字幕免费在线看| 亚洲va中文字幕无码| 五月天网站亚洲小说| 亚洲视频精品在线观看| 亚洲日本天堂在线| 日韩免费高清播放器| 成人无遮挡裸免费视频在线观看| 波多野结衣免费视频观看 | 亚洲高清视频免费| 37pao成人国产永久免费视频| 国产精品成人四虎免费视频| 亚洲色无码一区二区三区| 亚洲国产激情在线一区| 国产好大好硬好爽免费不卡| 午夜一级免费视频| 亚洲国产国产综合一区首页| 免费看黄福利app导航看一下黄色录像| 中文字幕高清免费不卡视频| 亚洲AV无码国产丝袜在线观看| MM1313亚洲精品无码久久| 99热在线精品免费播放6| 国产国拍亚洲精品福利 | 亚洲情XO亚洲色XO无码| 日本免费一区二区三区| 亚洲狠狠色丁香婷婷综合| 三年片在线观看免费观看高清电影| 亚洲欧洲精品成人久久曰| 不卡精品国产_亚洲人成在线| 亚洲成AV人片高潮喷水| 国产精品亚洲精品日韩已方| 91精品全国免费观看含羞草| 亚洲国产精品无码成人片久久| 一级毛片免费播放视频| 免费在线观看黄网| 最近中文字幕免费完整| 美女又黄又免费的视频|