鎴戠殑鐩爣鏄仛涓涓畝鍗曠殑portlet錛屾瘡嬈¤鍙栨柊嫻殑RSS绔欑偣鏄劇ず鏈鏂扮殑鏂伴椈鏉$洰銆?br />
鑺變簡涓涓笅鍗堬紝鍘籹ourceforge鍜実oogle 涓婃悳绱?opensource 鐨?java rss lib錛岃繕鐪熸湁涓嶅皯錛堥『渚挎彁涓涓嬶紝sourceforget鐨勬悳绱㈢湡鐨勫緢鐑傦級銆傜畝鍗曡繃婊や互鍚庯紝瑙夊緱浠ヤ笅涓変釜綾誨簱姣旇緝鏈夋悶澶淬俁ome 銆乺ssutils鍜宺sslib4j銆傚叿浣撶殑璇勬祴濡備笅錛?br />
涓. Rome
Rome 鏄?java.net 涓婄殑涓涓紑婧愰」鐩紝鐜板湪鐨勭増鏈槸0.5銆備負浠涔堝彨Rome鍛紝鎸夊畠鐨勪粙緇嶄笂鐨勮娉曪紝鏈変釜“鏉℃潯澶ц礬閫氱綏椹?#8221;鐨勬剰鎬濓紝鏈変簺RSS鐨勬剰鍛熾俁ome鍙兘鏄?sun 鍏徃浠庤嚜宸辨煇涓瓙欏圭洰涓娊紱誨嚭鏉ョ殑錛宲ackage鍜岀被鐨勫懡鍚嶅氨璞2sdk涓鏍鋒劅瑙夎鑼冦傚姛鑳戒笂鏀寔RSS鐨勬墍鏈夌増鏈強 Atom 0.3(Atom鏄拰RSS綾諱技鐨勪竴縐嶅唴瀹硅仛鍚堢殑鏂瑰紡)銆俁ome 鏈韓鏄彁渚汚PI鍜屽姛鑳藉疄鐜幫紝鍏朵笅鐙珛鍑轟竴涓?rome-fetcher 欏圭洰錛屼笓闂ㄧ敤鏉ヨ鍙朢SS鍐呭銆傛鍜屾垜鎰忓晩銆?br />
鍙傜収 fetcher 涓婄殑鑼冧緥錛岃В鏋?RSS 鐩稿綋綆鍗曪紝浠g爜鐗囨柇濡備笅錛?br />
FeedFetcher fetcher = new HttpURLFeedFetcher();
SyndFeed feed = fetcher.retrieveFeed(feedUrl);
System.out.println(feedUrl + " has a title: " + new String(feed.getTitle().getBytes("iso8859-1"), "utf-8") + " and contains " + feed.getEntries().size() + " entries.");
for (Iterator iter = feed.getEntries().iterator(); iter.hasNext(); ) {
SyndEntry entry = (SyndEntry) iter.next();
System.out.println("<a href=" + entry.getLink() + ">" + entry.getTitle() + "</a>[" + entry.getPublishedDate() + "]");
}
涓轟粈涔堢敤 new String(feed.getTitle().getBytes("iso8859-1"), "utf-8") 榪涜杞爜錛屾槸鍥犱負Rome鏉ヨВ鏋?鏂版氮鏂伴椈 RSS鐨勬椂鍊欒瘯鍥句粠 URLConnection 鐨?header 涓緱鍒扮紪鐮佷俊鎭紝鍚﹀垯鎬繪槸鐢?iso8859-1銆傝屾柊嫻殑RSS response header 涓笉鍖呭惈緙栫爜淇℃伅錛屾墍浠ヨ鍋氫竴鐣漿鐮併傚彟澶栬繕鏈夊氨鏄?entry.getPubDate() 涔熷皢榪斿洖null錛屽洜涓篟ome 鐢ㄥ縐峱attern 鍘昏瘯鍥捐В鏋愭椂闂翠俊鎭紝鏂版氮鐨勬椂闂存牸寮忚繕鏄鍚圧FC822鐨勶紝浣嗘槸Rome 浣跨敤SimpleDateFormat 鏉ヨВ鏋愭椂闂達紝瀹冨繕璁頒簡涓鐐癸紝灝辨槸 SimpleDateFormat鐨勮В鏋愭槸鍏寵仈浜?Locale 鐨勶紝鎵浠ョ敱浜庢垜鏈湴locale鏄疌hina錛孲impleDateFormat鐨刾arse鏂規硶瑙f瀽涓嶅嚭鑻辨枃鐨勬椂闂村瓧絎︺備互涓婁唬鐮佸墠鍔?Locale.setDefault(Locale.Englisth) 鍙互鎼炲畾錛屼絾鎬昏寰椾笉鐖姐?br />
濡傛灉涔熶笉鎯寵漿鐮佺殑璇濓紝Rome 榪樻彁渚涗簡涓涓?XmlReader 鐨勭被錛岄氳繃鍒嗘瀽 header 鍜?xml 鍐呭鎺ㄦ柇 encoding錛屼慨鏀?HttpURLFeedFetcher 鐨勬簮鐮?:
// 鏀瑰彉 InputStreamReader , 鎹㈢敤 XmlReader
//InputStreamReader reader = new InputStreamReader(is, ResponseHandler.getCharacterEncoding(connection));
XmlReader reader = new XmlReader(connection);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(reader);
閭d箞涓枃涓嶇敤杞爜涔熻兘姝g‘鏄劇ず浜嗭紝涓嶈繃淇敼婧愮爜鍚庢垜鍐嶈В鏋?nbsp;鐧懼害鏂伴椈 RSS 鐨勬椂鍊欙紝搴曞眰鐨凧DOM鍗翠細鎶遍敊璇磝ml 鏍煎紡涓嶆紜備篃璁窻ome鐨勫紑鍙戣呬篃閬囧埌榪囪繖鏍風殑闂錛屾墍浠ユ墠娌℃湁浣跨敤 XmlReader銆?br />
浜? rssutils
瀹冩槸涓涓伐鍏峰寘錛宻un 鐨?develope绔欑偣涓婃湁鏂囩珷 RSS Utilities: A Tutorial 涓撻棬浠嬬粛鐢╰aglib 鏄劇ずRSS鍐呭錛岄檮甯︾殑鍙互涓嬭澆榪欎釜宸ュ叿鍖咃紝浣嗘垜浠庣綉涓婃悳绱笉鍒板畠鐨勫嚭澶勶紝鑷劧涔熸棤娉曠湅鍒板畠鐨勬簮鐮併備絾浠庡弽緙栬瘧鐨勪唬鐮佹潵鐪嬶紝涔熸槸sun鍏徃鍐呴儴楂樻墜鎵鍋氾紝璁捐綺懼閥錛屼唬鐮佺畝緇冦傚疄鐜頒竴涓猦andler錛岀敤sax鐨勬柟寮忚В鏋恱ml鍐呭錛宧andler鍐呴儴鐢ㄥ弽灝勫拰javabean鐨勬満鍒舵瀯閫燫SS鍏冪礌瀵硅薄騫惰祴鍊箋備唬鐮佺墖鏂涓嬶細
RssParser parser = new RssParserImpl();
Rss rss = parser.parse(new URL(url));
System.out.println(rss.getChannel().getTitle());
for (Iterator iter = rss.getChannel().getItems().iterator(); iter.hasNext();) {
Item item = (Item)iter.next();
System.out.println("<a href=" + item.getLink() + "</a>" + item.getTitle() + " " + item.getPubDate());
}
濡備笂鎵紺猴紝浠g爜涔熸槸鐩稿綋綆鍗曪紝娌℃湁杞爜鐨勯渶姹傦紝鏃墮棿涔熸紜樉紺猴紙鍥犱負鏍規湰娌″仛鍒嗘瀽錛屽綋瀛楃涓茬洿鎺ヨ繑鍥烇級銆備絾鏄宸ュ叿鍖呭茍闈炵湡姝e澶栧叕甯冿紝浠g爜涓湁浜涗笉涓ヨ皚鐨勫湴鏂癸紝濡係ystem.out鐨勮緭鍑猴紝寰堜笉鐖姐傝屼笖濡傛灉 RSS 鐨?xml鍐呭濡傛灉緙哄皯閮ㄥ垎涓嶅父鐢ㄥ厓绱?錛屽畠涔熶細printStackTrace涓澶т覆錛屾湇浜嗗畠浜嗐傚彟澶栬繕鏈変竴涓ぇ闂錛屽氨鏄綋鎴戠敤瀹冭В鏋?鐧懼害鏂伴椈 鐨勬椂鍊欙紝鐩存帴灝辨姤閿欙細org.xml.sax.SAXParseException: 瀛楃杞崲閿欒錛?#8220;Unconvertible UTF-8 character beginning with 0xb0”銆傜綉涓婃煡浜嗘煡錛屽彲鑳芥槸 java 淇敼榪囩殑 UTF-8 鍜屾爣鍑?UTF-8 浜涘井涓嶅吋瀹瑰鑷淬傝鎯呭弬鐪?Java 騫沖彴涓殑澧炶ˉ瀛楃 涓鏂囥?br />
涓? rsslib4j
rsslib4j 鏄?sourceforget 涓婄殑欏圭洰錛屼富欏墊槸 http://sourceforge.net/projects/rsslib4j錛岀幇鍦ㄦ渶鏂扮殑鐗堟湰鏄?.2錛屾墠0.2錛屽彲鏄紑鍙戠姸鎬佸嵈宸茬粡鏄ǔ瀹氫駭鍝佸寲浜嗐傚悓鏍鋒敮鎸佹墍鏈塕SS鐗堟湰銆?br />
rsslib4j 瑙f瀽 RSS 鐨勬柟寮忓拰 rssutils 涓鏍鳳紝鎴戠湅浜嗙湅婧愮爜錛岃璁℃瘮杈冪畝鍗曪紝浠g爜鍙鎬т竴鑸紝澶ч噺浣跨敤if銆備唬鐮佺墖鏂涓嬶細
RSSHandler hand = new RSSHandler();
RSSParser.parseXmlFile(new URL(url), hand, false);
RSSChannel ch = hand.getRSSChannel();
System.out.println(ch.toString());
LinkedList lst = hand.getRSSChannel().getItems();
for (int i = 0; i < lst.size(); i++) {
RSSItem itm = (RSSItem) lst.get(i);
System.out.println(itm.toString());
}
鐪嬭搗鏉ヤ篃鏄浉褰撴竻鏅版槗鎳傦紝鎵ц緇撴灉涔熷拰rssutils涓鏍鳳紝涓嶈繃鐢ㄥ畠鏉ヨВ鏋?鐧懼害鏂伴椈 鍗翠笉浼氬嚭鐜?rssutils 鐨剈tf-8緙栫爜閿欒錛岀湡鏄鎬紝涓よ呴兘鏄皟JAXP鐨?SAXParser 銆備笉榪囧畠鐨勪唬鐮佷篃鏈塨ug錛屼笉鑳借В鏋愬嚭 channel 鐨勪竴浜涗俊鎭紝鏌ョ湅婧愮爜錛屾湁鐐圭畝鍗曢昏緫閿欒錛屼慨姝e悗瑙e喅銆傛兂鍐欏皝email緇欓」鐩紑鍙戣呭彲鎯滆嫳鏂囦笉琛岋紝閫氳繃cvs鍘籧ommit涓涓嬩篃瀚岄夯鐑︼紝浣滅艦銆?br />
鎬葷粨
Rome:
浼?- 1錛夊彲鎵╁睍鎬уソ錛屾湁鍓嶉斻?錛夊姛鑳藉己澶э紝闄や簡鐢ㄦ潵瑙f瀽RSS錛岃繕鍙互鑱氬悎鍜屾瀯閫燫SS銆?br />
鍔?- 1錛夊吋瀹規у緟鍔犲己錛?錛夌粦瀹歫dom銆備負浠涔堜笉鍠滄 jdom鍛紝鍥犱負瀹僡pi 鑰佸彉錛岃繕寰堢粷錛屾悶寰椾笉鍏煎銆?br />
rssutils:
浼?- 1錛変唬鐮佽璁$簿濡欙紝鍊煎緱瀛︿範銆?錛夐檮甯?taglib 瀹炵幇錛岀洿鎺ュ彲鍦?jsp 涓簲鐢ㄣ?br />
鍔?- 1錛夋病鏈夋簮鐮併?2錛夊吋瀹規ф湁寰呭姞寮恒?3錛夊姛鑳借緝寮憋紝鍙兘鐢ㄦ潵瑙f瀽RSS錛屾病鏈夎仛鍚堝拰鏋勯燫SS鍔熻兘銆?br />
rsslib4j:
浼?- 1錛夌畝鍗曟湁鏁堬紝浣撶Н灝忋?錛夊吋瀹規т笉閿欍?br />
鍔?- 1錛夋湁灝廱ug銆?錛夊姛鑳借緝寮憋紝鍙兘鐢ㄦ潵瑙f瀽RSS錛屾病鏈夎仛鍚堝拰鏋勯燫SS鍔熻兘銆?br />
緙栬緫閫夋嫨錛?rsslib4j
鎴戝彧鐢ㄦ潵璇昏鏂版氮鏂伴椈錛宺sslib4j 澶熺敤灝卞ソ錛屼笉榪囪鑷繁淇敼鍜岀紪璇戞簮鐮併?br />
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=282333

]]>