2016-08-08 6 views
2

Я пытаюсь создать RSS-каналы, используя java ROME API. Мое требование заключается в том, что каждая запись должна содержать изображение, как показано ниже:Как создать записи с элементом изображения в RSS-фиде, используя API-интерфейс java?

<?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> 

Я новичок в Java РИМ API. Он предоставляет пакет :: com.rometools.rome.feed.synd.SyndImageImpl, чтобы установить/получить элемент изображения в полном комплекте, но не в отдельных записях. Для входа в RSS-канал у него есть пакет :: com.rometools.rome.feed.synd.SyndEntryImpl, но он не предоставляет никаких функций для установки или получения изображения.

Пожалуйста, помогите мне решить эту проблему. Спасибо заранее.

ответ

1

The RSS spec не указывает элементы изображения для записей, но вы можете расширить его с помощью Image namespace.

Короткое решение может быть таким:

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); 

Это приведет к действительным 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> 

Более надежный способ заключается в create a custom module как они сделали here и here.