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; }
}
`
うん、簡単です。