Java生成RSS-XML文件

详细看代码,部分涉及到隐私的就给删了,但是不影响功能,里面的日期等格式化,不知道的可以看我前面的博客

 

/**
 * author:humf
 */
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.sun.syndication.feed.module.SipoModule;
import com.sun.syndication.feed.module.SipoModuleImpl;
import com.sun.syndication.feed.rss.Channel;
import com.sun.syndication.feed.rss.Description;
import com.sun.syndication.feed.rss.Item;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.WireFeedOutput;

public class RssUtil {
	private static Logger logger = Logger.getLogger(RssUtil.class);

	public static String createXml(Map map) throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		//
		Channel channel = new Channel("rss_2.0");
		if (map.get("title") != null && !"".equals(map.get("title")))
			channel.setTitle(map.get("title").toString());
		if (map.get("") != null && !"".equals(map.get("")))
			channel.setPubDate(format.parse((String) map.get("")));
		if (map.get("") != null && !"".equals(map.get("")))
			channel.setDescription(map.get("").toString());
		if (map.get("link") != null && !"".equals(map.get("link")))
			channel.setLink(map.get("link").toString());// 订阅地址
		/*if (map.get("pubdate") != null && !"".equals(map.get("pubdate")))
			channel.setPubDate(DateUtil.parseDayDate(map.get("pubdate")+""));*/
		channel.setEncoding("UTF-8");// RSS文件编码
		channel.setLanguage("ZH_CN");// RSS使用的语言
		// channel.setTtl(5);//time to live的简写,在刷新前当前RSS在缓存中可以保存多长时间(分钟)
		if (map.get("") != null && !"".equals(map.get("")))
			channel.setCopyright("");// 
		if (map.get("") != null && !"".equals(map.get("")))
			channel.setPubDate(format.parse((String) map.get("")));
		if (map.get("items") != null) {
			List arrays = (ArrayList) map.get("items");
			List<Item> items = new ArrayList<Item>();
			for (int i = 0; i < arrays.size(); i++) {
				Map itemMap = (Map) arrays.get(i);
				Item item = new Item();
				Description description = new Description();// 初始化Item的Description对象
				description.setValue(itemMap.get("description").toString());// 设置Description的值
				if (itemMap.get("title") != null && !"".equals(itemMap.get("title")))
					item.setTitle(itemMap.get("title").toString());
				if (itemMap.get("url") != null && !"".equals(itemMap.get("url")))
					item.setLink(itemMap.get("url").toString());
				if (itemMap.get("legalDate") != null && !"".equals(itemMap.get("legalDate")))
					item.setPubDate(format.parse(itemMap.get("legalDate").toString()));
				if (itemMap.get("description") != null && !"".equals(map.get("description")))
					item.setDescription(description);
				List moduleList = item.getModules();
				SipoModule sipomodule = new SipoModuleImpl();
				/*if (itemMap.get("url") != null && !"".equals(itemMap.get("url")))
					sipomodule.setUrl(itemMap.get("url").toString());
				if (itemMap.get("") != null && !"".equals(itemMap.get("")))
					sipomodule.setCode(itemMap.get("").toString());// 
				if (itemMap.get("") != null && !"".equals(itemMap.get("")))
					sipomodule.setGroup(itemMap.get("").toString());// 		
				if (itemMap.get("") != null && !"".equals(itemMap.get("")))
					sipomodule.setNpl(itemMap.get("").toString());// 
				if (itemMap.get("description") != null && !"".equals(itemMap.get("description")))
					sipomodule.setDescription(itemMap.get("description").toString());// 
				if (itemMap.get("identifier") != null && !"".equals(itemMap.get("identifier")))
					sipomodule.setIdentifier(itemMap.get("identifier").toString());// 
				if (itemMap.get("") != null && !"".equals(itemMap.get("")))
					sipomodule.setLegal(itemMap.get("").toString());// 
				/*if (itemMap.get("pages") != null && !"".equals(itemMap.get("pages")))
					sipomodule.setPage(itemMap.get("pages").toString());*/

				moduleList.add(sipomodule);
				item.setModules(moduleList);

				items.add(item);
			}
			if (!items.isEmpty())
				channel.setItems(items);
		}

		WireFeedOutput out = new WireFeedOutput();
		try {
			String xml = out.outputString(channel);
			return xml;
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (FeedException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.cnfilm.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import com.cnfilm.web.film.Film; import com.sun.syndication.feed.rss.Channel; import com.sun.syndication.feed.rss.Description; import com.sun.syndication.feed.rss.Item; import com.sun.syndication.io.FeedException; import com.sun.syndication.io.WireFeedOutput; /** * 文件名:RssUtils.java 网站RSS生成 * 版本信息:V1.0 * 日期:2013-06-18 * Copyright BDVCD Corporation 2013 * 版权所有 http://www.bdvcd.com */ public class RssUtils { public static String getRssString(List filmList,HashMap map){ Channel channel = new Channel("rss_2.0"); channel.setTitle(map.get("title")); channel.setDescription(map.get("description")); channel.setLink("http://www.bdvcd.com/"); channel.setEncoding("UTF-8"); /**这个list对应rss中的item列表**/ List items = new ArrayList(); /**新建Item对象,对应rss中的**/ Item item = null; for(Film film:filmList){ item = new Item(); item.setAuthor(film.getStr("starring")); item.setLink("http://www.bdvcd.com/"+film.getStr("curl")+"/"+film.getStr("url")+".html"); item.setPubDate(DateUtils.parse(film.getStr("addtime"))); item.setTitle(film.getStr("fname")); Description description = new Description(); description.setValue(film.getStr("content")); item.setDescription(description); items.add(item); } channel.setItems(items); /**用WireFeedOutput对象输出rss文本**/ WireFeedOutput out = new WireFeedOutput(); String rssString = ""; try { rssString = out.outputString(channel); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (FeedException e) { e.printStackTrace(); } return rssString; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值