1. 概要

RSS(RichSiteSummaryまたはReallySimpleSyndication)は、さまざまな場所から集約されたコンテンツを読者に提供するWebフィード標準です。 ユーザーは、お気に入りのブログやニュースサイトなどで最近公開されたものをすべて1か所で確認できます。

アプリケーションは、RSSを使用して、RSSフィードを介して情報を読み取ったり、操作したり、公開したりすることもできます。

この記事では、RomeAPIを使用してJavaでRSSフィードを処理する方法の概要を説明します。

2. Mavenの依存関係

RomeAPIの依存関係をプロジェクトに追加する必要があります。

<dependency>			
    <groupId>rome</groupId>			
    <artifactId>rome</artifactId>			
    <version>1.0</version>
</dependency>

最新バージョンはMavenCentralで見つけることができます。

3. 新しいRSSフィードの作成

まず、SyndFeedインターフェースのデフォルト実装SyndFeedImplを使用して、RomeAPIで新しいRSSフィードを作成しましょう。 このインターフェースはすべてのRSSフレーバーを処理できるため、いつでも安全に使用できます。

SyndFeed feed = new SyndFeedImpl();
feed.setFeedType("rss_1.0");
feed.setTitle("Test title");
feed.setLink("http://www.somelink.com");
feed.setDescription("Basic description");

このスニペットでは、タイトル、リンク、説明などの標準のRSSフィールドを使用してRSSフィードを作成しました。 SyndFeedは、著者、寄稿者、著作権、モジュール、公開日、画像、外国のマークアップ、言語など、さらに多くのフィールドを追加する機会を提供します。

4. エントリの追加

RSSフィードを作成したので、これでエントリを追加できます。 以下の例では、SyndEntryインターフェイスのデフォルト実装SyndEntryImplを使用して新しいエントリを作成します。

SyndEntry entry = new SyndEntryImpl();
entry.setTitle("Entry title");        
entry.setLink("http://www.somelink.com/entry1");
    
feed.setEntries(Arrays.asList(entry));

5. 説明の追加

これまでのところエントリはかなり空なので、説明を追加しましょう。 これを行うには、SyndContentインターフェイスのデフォルト実装SyndContentImplを使用します。

SyndContent description = new SyndContentImpl();
description.setType("text/html");
description.setValue("First entry");

entry.setDescription(description);

setType メソッドを使用して、説明のコンテンツがテキストまたはHTMLになるように指定しました。

6. カテゴリの追加

RSSエントリは、関心のあるエントリを見つけるタスクを簡素化するために、多くの場合、カテゴリに分類されます。 SyndCategoryインターフェースのデフォルト実装SyndCategoryImplを使用して、エントリにカテゴリを追加する方法を見てみましょう:

List<SyndCategory> categories = new ArrayList<>();
SyndCategory category = new SyndCategoryImpl();
category.setName("Sophisticated category");
categories.add(category);

entry.setCategories(categories);

7. フィードの公開

すでにエントリ付きのRSSフィードがあります。 今、それを公開したいと思います。 この記事の目的上、公開とは、フィードをストリームに書き込むことを意味します。

Writer writer = new FileWriter("xyz.txt");
SyndFeedOutput syndFeedOutput = new SyndFeedOutput();
syndFeedOutput.output(feed, writer);
writer.close();

8. 外部フィードを読む

新しいフィードを作成する方法はすでに知っていますが、既存のフィードに接続する必要がある場合もあります。

URLを指定して、フィードを読み取り/ロードする方法を見てみましょう。

URL feedSource = new URL("http://rssblog.whatisrss.com/feed/");
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedSource));

9. 結論

この記事では、いくつかのエントリを含むRSSフィードを作成する方法、フィードを公開する方法、および外部フィードを読み取る方法を示しました。

いつものように、GitHubでこの記事で提供されている例を確認できます。