在利用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 代碼
- private static String[] ADDITIONAL_MASKS;
- static {
- ADDITIONAL_MASKS = PropertiesLoader.getPropertiesLoader().getTokenizedProperty("datetime.extra.masks","|");
- }
- public static Date parseDate(String sDate) {
- Date d = parseW3CDateTime(sDate);
- if (d==null) {
- d = parseRFC822(sDate);
- if (d==null && ADDITIONAL_MASKS.length>0) {
- d = parseUsingMask(ADDITIONAL_MASKS,sDate);
- }
- }
- return d;
- }
哦,原來只需要在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不錯,更新快)
如果沒有特別註明,本Blog文章豈爲原創。
轉貼請註明出處: