com.sun.syndication.feed.synd.SyndFeed クラスの setFeedType メソッドで指定する feedType 文字列がどういうのかよくわからなかったので調べてみた。

com.sun.syndication.feed.WireFeed クラスのドキュメントに書いてあった。

The format of the 'type' property must be [FEEDNAME]_[FEEDVERSION] with the FEEDNAME in lower case, for example: rss_0.9, rss_0.93, atom_0.3

rome: WireFeed (ROME, RSS and atOM utilitiEs for Java 1.0 API)

つまり、

{フィードフォーマットの名称}_{フィードフォーマットのバージョン}

という感じの文字列。

以下、RSS2.0を指定する例。


String feedType = "rss_2.0";
SyndFeed feed = new SyndFeedImpl();
feed.setFeedType(feedType);
feed.setTitle("たいとる");
feed.setDescription("せつめい");
feed.setLink("http://www.nilab.info/");
feed.setAuthor("NI-Lab.");
feed.setLanguage("ja");
feed.setEncoding("UTF-8");
feed.setPublishedDate(new Date());

ROMEでサポートされてるフォーマットは src/java/com/sun/syndication/rome.properties に書いてある。
こんな感じ。


CVS タグ 	ROME_PROPONO_0_5_RELEASE, PROPONO_0_6, v1_0RC2-CORE, RC1-core, v-0-9, rome-1_0_0, HEAD
 
(中略)
 
# Feed Parser implementation classes
#
WireFeedParser.classes=com.sun.syndication.io.impl.RSS090Parser \
                       com.sun.syndication.io.impl.RSS091NetscapeParser \
                       com.sun.syndication.io.impl.RSS091UserlandParser \
                       com.sun.syndication.io.impl.RSS092Parser \
                       com.sun.syndication.io.impl.RSS093Parser \
                       com.sun.syndication.io.impl.RSS094Parser \
                       com.sun.syndication.io.impl.RSS10Parser  \
                       com.sun.syndication.io.impl.RSS20wNSParser  \
                       com.sun.syndication.io.impl.RSS20Parser  \
                       com.sun.syndication.io.impl.Atom10Parser \
                       com.sun.syndication.io.impl.Atom03Parser 
 
(中略)
 
# Feed Generator implementation classes
#
WireFeedGenerator.classes=com.sun.syndication.io.impl.RSS090Generator \
                          com.sun.syndication.io.impl.RSS091NetscapeGenerator \
                          com.sun.syndication.io.impl.RSS091UserlandGenerator \
                          com.sun.syndication.io.impl.RSS092Generator \
                          com.sun.syndication.io.impl.RSS093Generator \
                          com.sun.syndication.io.impl.RSS094Generator \
                          com.sun.syndication.io.impl.RSS10Generator  \
                          com.sun.syndication.io.impl.RSS20Generator  \
                          com.sun.syndication.io.impl.Atom10Generator \
                          com.sun.syndication.io.impl.Atom03Generator 
 
(中略)
 
# Feed Conversor implementation classes
#
Converter.classes=com.sun.syndication.feed.synd.impl.ConverterForAtom10 \
                  com.sun.syndication.feed.synd.impl.ConverterForAtom03 \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS090 \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS091Netscape \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS091Userland \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS092 \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS093 \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS094 \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS10  \
                  com.sun.syndication.feed.synd.impl.ConverterForRSS20 

具体的なfeedType文字列はそれぞれの実装クラスの中に書かれている。
実装クラスはこのへんにある → src/java/com/sun/syndication/io/impl

rome: ドキュメント & ファイル: 20090303 から rome-1.0RC3-sources-unofficial.jar をダウンロードして、 rome-1.0RC3-sources-unofficial\com\sun\syndication\io\impl 以下を「this(」でgrepしてみたらこんな結果。


Atom03Generator.java(46):         this("atom_0.3","0.3");
Atom03Parser.java(36):         this("atom_0.3", ATOM_03_NS);
Atom10Generator.java(60):         this("atom_1.0","1.0");
Atom10Parser.java(67):         this("atom_1.0");
PluginManager.java(46):         this(propertyKey, null, null);
RSS090Generator.java(46):         this("rss_0.9");
RSS090Parser.java(48):         this("rss_0.9", RSS_NS);
RSS091NetscapeGenerator.java(34):         this("rss_0.91N","0.91");
RSS091NetscapeParser.java(26):         this("rss_0.91N");
RSS091UserlandGenerator.java(43):         this("rss_0.91U","0.91");
RSS091UserlandParser.java(37):         this("rss_0.91U");
RSS092Generator.java(38):         this("rss_0.92","0.92");
RSS092Parser.java(37):         this("rss_0.92");
RSS093Generator.java(36):         this("rss_0.93","0.93");
RSS093Parser.java(27):         this("rss_0.93");
RSS094Generator.java(35):         this("rss_0.94","0.94");
RSS094Parser.java(33):         this("rss_0.94");
RSS10Parser.java(38):         this("rss_1.0", RSS_NS);
RSS20Generator.java(39):         this("rss_2.0","2.0");
RSS20Parser.java(29):         this("rss_2.0");
RSS20wNSParser.java(41):         this("rss_2.0wNS");

せっかくなのでROME関連のページを参考までに。

-概要 (ROME, RSS and atOM utilitiEs for Java 1.0RC1 API)
-ヅラずれなるままに(2009-01-03) - ROME経由でJDOMにRSS1.0文書を渡すとIllegalAddExceptionが発生する
-[ヅラド] ROME と GeoRSS module を使って GeoRSS を出力する

Ref. rome: ROME: RSS/Atom syndication and publishing tools

tags: Java Feed zurazure

Posted by NI-Lab. (@nilab)