Subscribed unsubscribe Subscribe Subscribe

JavaでRSSフィードを取得する

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedInput;

public class RssReader {

    public static void main(String []args) {
        String url = "http://d.hatena.ne.jp/sugyan/rss2";
        
        HttpClient client = new HttpClient();
        GetMethod method = new GetMethod(url);
        
        try {
            client.executeMethod(method);
            InputStream in = method.getResponseBodyAsStream();
            InputStreamReader isr = new InputStreamReader(in, "UTF-8");
            
            SyndFeedInput sfi = new SyndFeedInput();
            SyndFeed feed = sfi.build(isr);
            Iterator<?> iterator = feed.getEntries().iterator();
            while (iterator.hasNext()) {
                SyndEntryImpl entry = (SyndEntryImpl)iterator.next();
                System.out.println(entry.getTitle());
                System.out.println(entry.getLink());
                System.out.println();
            }
            System.out.println(method.getResponseCharSet());
        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (FeedException e) {
            e.printStackTrace();
        }
    }
}

どうやらこんなカンジでRSSのエントリーを取得できるらしい。
ROMEがRSS1.0とか2.0とかAtom1.0とかの違いを吸収してくれるらしい。
https://rome.dev.java.net/
このへんのライブラリは色々あるし色々変わるみたいで、調べるのに時間がかかった上に本当にこれでいいのかどうかもよく分からない。