javaでRSSフィードを解析したい時には、ROMEプロジェクトが便利です。

インストール

Project ROMEからrome-1.0.jarをダウンロードして、クラスパスに配備します。

Servletを作る

やっつけ仕事でServletを作ってみます。

先人の知恵を参考にさせて頂きました。

ROMEプロジェクトと他人のコードという巨人の肩にのって、楽して遠方を見るのです。

コピペプログラミングとも言います。

`

package my.package;

import java.net.URL;
import java.util.List;
import java.io.PrintWriter; import java.io.IOException;

import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.XmlReader;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

public class RSSReaderServlet extends HttpServlet {

protected void doGet(HttpServletRequest request,
                    HttpServletResponse response) 
    throws ServletException, IOException {

    String url = request.getParameter("url");
    if (url == null) {
        url = "http://www.j-cast.com/index.xml";
    }
    try {  
        URL feedUrl = new URL(url);
        SyndFeedInput input = new SyndFeedInput();
        SyndFeed feed = input.build(new XmlReader(feedUrl.openStream()));
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter pw = response.getWriter();
        pw.print("<html>\n");
        pw.print("<head>\n");
        pw.print("<title> "+feed.getTitle()+"/ 簡易RSSリーダ</title>\n");
        pw.print("</head>\n");
        pw.print("<body>\n");
        pw.print("<table>\n");
        List<SyndEntry> entries = (List)feed.getEntries();
        for (SyndEntry entry : entries) {
            pw.print("<tr>\n");
            pw.print("<td><a href='"+entry.getUri()+"'>"+entry.getTitle()+"</a></td>\n");
            pw.print("<td>"+entry.getPublishedDate().toString()+"</td>\n");
            pw.print("<td>"+entry.getDescription().getValue()+"</td>\n");
            pw.print("</tr>\n");
        }
        pw.print("</table>\n");
        pw.print("</body>\n");
        pw.print("</html>\n");
        pw.close();
    } catch (Exception e) {  
        //  
    }  
    return;
}

}

`

うん、簡単です。