如何利用Rome parser 163.com的rss的日期

在利用Rome解析163的rss的時候,發現無法獲得rss中的文章的發佈日期。

查看了163.com的rss源代碼後,發現rss以是gbk的編碼方式提供(sohu,sina,xinhuanet都是utf-8格式,並且日期格式也是gmt的日期格式,rome直接能把日期解析出來)。

查看了rome的源代碼後,發現問題出在com.sun.syndication.io.impl.DateParser這個日期解析類上面,

再仔細分析了一個這個類,原來rome支持自定義日期格式。

java 代碼
  1. private static String[] ADDITIONAL_MASKS;   
  2.   
  3. static {   
  4.     ADDITIONAL_MASKS = PropertiesLoader.getPropertiesLoader().getTokenizedProperty("datetime.extra.masks","|");   
  5. }  
  1. public static Date parseDate(String sDate) {   
  2.       Date d = parseW3CDateTime(sDate);   
  3.       if (d==null) {   
  4.           d = parseRFC822(sDate);   
  5.           if (d==null && ADDITIONAL_MASKS.length>0) {   
  6.               d = parseUsingMask(ADDITIONAL_MASKS,sDate);   
  7.           }   
  8.       }   
  9.       return d;   
  10.   }  

哦,原來只需要在rome.properties中定義好自定義日期格式類就可以了。

我的定義如下:

 datetime.extra.masks=yyyy-MM-dd HH:mm:ss|yyyy-MM-dd HH:mm

前面一段是爲了對付163使用,後面一段是爲了對付天極網使用。

Rome真方便!

Rome下載地址:http://wiki.java.net/bin/view/Javawsxml/Rome

163的rss地址:http://sports.163.com/special/00051K7F/rss_sportscp.xml

天極的rss地址:http://www.yesky.com/index.xml (這個rss不錯,更新快)

   http://netbus.iteye.com

如果沒有特別註明,本Blog文章豈爲原創。

轉貼請註明出處:   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章