Java生成RSS-XML文件

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

 

/**
 * 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

	}

}