7

私の Java アプリケーションの RSS を生成するためにローマ 1.0を使用しています。

私のJavaで:

    SyndFeed feed = new SyndFeedImpl();
    feed.setFeedType( "rss_2.0" );
    feed.setTitle( "My Site" );
    feed.setLink( "http://example.com" );
    feed.setDescription( "Test Site." );    

    List<SyndEntry> entries = new ArrayList<SyndEntry>();
    SyndEntry entry = null;
    SyndContent description = null;

    entry = new SyndEntryImpl();
    entry.setTitle( "Entry1" );
    entry.setLink( "http://example.com/entry1" );
    entry.setPublishedDate( new Date() );

    description = new SyndContentImpl();
    description.setType("text/html");
    description.setValue( "This is the content of entry 1." );
    entry.setDescription( description );

    entries.add( entry );
    feed.setEntries(entries);

    Writer writer = new FileWriter("/home/jr/Desktop/stream.xml");
    SyndFeedOutput output = new SyndFeedOutput();
    output.output(feed,writer);
    writer.close();

生成された RSS:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>My Site</title>
    <link>http://example.com</link>
    <description>Test Site.</description>
    <item>
      <title>Entry1</title>
      <link>http://example.com/entry1</link>
      <description>This is the content of entry 1.</description>
      <pubDate>Fri, 09 Nov 2012 01:28:57 GMT</pubDate>
      <guid>http://example.com/entry1</guid>
      <dc:date>2012-11-09T01:28:57Z</dc:date>
    </item>
  </channel>
</rss>

ここでRSS が検証されると、次の推奨事項があります。

  • 項目に pubDate と dc:date の両方を含めないでください
  • アトムがありません:rel="self" のリンク

ローマ図書館で推薦を行う方法は?生成されたRSSは大丈夫ですか?

ありがとう。

4

3 に答える 3

2

カスタム SyndFeed クラスでは、Date 変数の名前を SyndFeed クラスの名前とは異なるものにしてください (つまり、「publishedDate」の代わりに「pubDate」などを使用します。これで問題が解決したようです。

public class CustomSyndFeed extends SyndFeedImpl {

protected Date pubDate;

    @Override
    public Date getPublishedDate() {
        return pubDate;
    }

    @Override
    public void setPublishedDate(final Date pubDate) {
        this.pubDate = new Date(pubDate.getTime());
    }
}
于 2015-06-03T17:28:12.400 に答える