How to create entries with image element in the RSS Feed using the java ROME API?

ぐ巨炮叔叔 提交于 2019-12-09 13:36:54

问题


I am trying to create the RSS Feeds using java ROME API. My requirement is that every entry should contain an Image as given below:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Sample RSS Build Results</title>
    <link>http://time.is</link>
    <description>sample RSS build</description>
        <item>
          <title>Ist Feed</title>
          <link>http://mysampleurl1.com</link>
          <description>The build was successful!</description>
          <pubDate>Mon, 08 Aug 2016 10:28:32 GMT</pubDate>
          <image>http://myimageurl1.com</image>
          <dc:date>2016-08-08T10:28:32Z</dc:date>
        </item>
        <item>
          <title>IInd Feed</title>
          <link>http://mysampleurl2.com</link>
          <description>The build was successful!</description>
          <pubDate>Mon, 08 Aug 2016 10:28:44 GMT</pubDate>
          <dc:date>2016-08-08T10:28:44Z</dc:date>
        </item>
</channel>

I am new to java ROME api. It provides the package :: com.rometools.rome.feed.synd.SyndImageImpl to set/get image item in complete feed but not in individual entries. For an entry in RSS feed it has package :: com.rometools.rome.feed.synd.SyndEntryImpl but it does not provide any function for setting or getting image.

Please help me to resolve this issue. Thanks in advance.


回答1:


The RSS spec doesn't specify image elements for entries, but you can extend it with Image namespace.

Short solution could be like this:

SyndEntry entry = new SyndEntryImpl();
..
Element image = new Element("image", Namespace.getNamespace("image", "http://web.resource.org/rss/1.0/modules/image/"));
image.addContent("http://localhost/feed/item1_image");
entry.getForeignMarkup().add(image);

This will result in valid xml:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>title</title>
    <link>http://localhost/feed</link>
    <description>description</description>
    <item>
      <title>entry title 1</title>
      <link>http://localhost/feed/item1</link>
      <image:image xmlns:image="http://web.resource.org/rss/1.0/modules/image/">http://localhost/feed/item1_image</image:image>
      <guid isPermaLink="false">http://localhost/feed/item1</guid>
    </item>
  </channel>
</rss>

More robust way is to create a custom module like they've done here and here.



来源:https://stackoverflow.com/questions/38829416/how-to-create-entries-with-image-element-in-the-rss-feed-using-the-java-rome-api

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!