在利用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文章岂为原创。
转贴请注明出处: