OMG,到底在寻找什么..................
(构造一个完美的J2EE系统所需要的完整知识体系)
posts - 198,  comments - 37,  trackbacks - 0

原帖地址:http://hedong.3322.org/newblog/archives/000051.html

利用rome写rss feed生成程序

  前几天转一个rome的介绍过来,现在拿它写个rss feed生成程序。rome的安装包中,有三个例程,分别是解析已有的rss feed,转换rss feed的格式以及内容聚合方面的,这个程序可以做补充。   程序思路:在更新不很频繁的发布网站上,可以生成一个通过http可访问的静态rss feed文件。为了便于调用,做成一个bean,接一个带有绝对路径的文件名作参数。
mport java.io.IOException;
import java.net.UnknownHostException;
import java.net.URL;
import java.util.List;
import java.util.Date;
import java.util.ArrayList;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.FileWriter;

import com.sun.syndication.feed.synd.SyndFeedI;
import com.sun.syndication.feed.synd.SyndContentI;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.io.SyndFeedOutput;
import com.sun.syndication.io.SyndFeedInput;


public class RssCreator
{
    public RssCreator()
        throws TRIPException, UnknownHostException, IOException
    {
    }   

    public boolean genRss(String filename)
    {

        try
        {
		。。。connect to database and locat the latest 15 records....
		String outputType = "rss_1.0";
		String outputFile = filename;
		Writer outWriter = null;
		try{
			outWriter=new BufferedWriter(new FileWriter(outputFile));
		}catch (Exception e){
			//deal exception
		}
                SyndFeedI feed = new SyndFeed();
                feed.setFeedType(outputType);

                feed.setTitle(converttoISO(" 你的站点的名称 "));
                feed.setDescription(converttoISO("描述一下站点吧。"));
                feed.setAuthor("author name");
                feed.setLink("http://www.yoursite.com");

                List entries = new ArrayList();
                feed.setEntries(entries);

                for (int i=0;i<15;i++) {
		    SyndEntry entry = new SyndEntry();
 	           	record = search.record(hits-i);

            		tfield=record.field("AUTHORS");
            		sfld = chkValue(tfield.getValue());
		    entry.setAuthor( sfld );

            		tfield=record.field("SUBCLASS");
            		sfld = chkValue(tfield.getValue());
		    List cats=new ArrayList();
		    SyndCategory cat=new SyndCategory();
		    cat.setName(sfld);
		    cats.add(cat);
		    entry.setCategories(cats);
		    
		    //entry.setContents("什么内容呢?");
            		tfield=record.field("ABS");
            		sfld = chkValue(tfield.getValue());
		    SyndContentI desc=new SyndContent();
		    desc.setValue(sfld);
		    entry.setDescription(desc);
		    
            		tfield=record.field("URL");
            		sfld = chkValue(tfield.getValue());
		    entry.setLink(sfld);
		    
            		tfield=record.field("TITLE");
            		sfld = chkValue(tfield.getValue());
		    entry.setTitle(sfld) ;
		    //long ldate=(long)1079511514653;
            		tfield=record.field("ID");//我数据库中,ID用的是系统时钟
            		sfld = chkValue(tfield.getValue());
		    Date pdate=null;
		    pdate=new Date(new Long(sfld).longValue());
  		    entry.setPublishedDate(pdate);
 
                    entries.add(entry);

                }

                SyndFeedOutput output = new SyndFeedOutput();
                output.output(feed,outWriter);
		outWriter.close();

            
		...close database....
		return true;
        }
        catch(Exception exception)
        {
            close database
            close file
            return false
        }
        return true;
    }
    private String chkValue(String s){
    	if (s==null) return "";
    	return s;
    }
    public static String converttoGB(String s)
    {
        try
        {
            byte abyte0[] = s.getBytes("ISO-8859-1");
            return new String(abyte0, "gb2312");
        }
        catch(Exception exception)
        {
            return s;
        }
    }
    public static String converttoISO(String s)
    {
        try
        {
            byte abyte0[] = s.getBytes("gb2312");
            return new String(abyte0, "ISO-8859-1");
        }
        catch(Exception exception)
        {
            return s;
        }
    }

}
  可能会遇到一些编码问题,所以可能要用到转换函数,写了几个放在代码末尾
posted on 2007-01-14 02:33 OMG 阅读(576) 评论(1)  编辑  收藏 所属分类: Ajax/RSS/Tag

FeedBack:
# re: 竹笋炒肉:利用rome写rss feed生成程序
2014-05-05 21:10 | 蒋猛
sadasdasdasdsadsa  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(1)

随笔分类

随笔档案

IT风云人物

文档

朋友

相册

经典网站

搜索

  •  

最新评论

阅读排行榜

评论排行榜