2016-08-08 2 views
2

J'essaie de créer les flux RSS en utilisant l'API java ROME. Mon exigence est que chaque entrée doit contenir une image comme indiqué ci-dessous:Comment créer des entrées avec un élément image dans le flux RSS à l'aide de l'API java ROME?

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

Je suis nouveau à Java ROME api. Il fournit le paquet :: com.rometools.rome.feed.synd.SyndImageImpl pour définir/obtenir l'élément image dans le flux complet, mais pas dans les entrées individuelles. Pour une entrée dans le flux RSS, il a le paquet :: com.rometools.rome.feed.synd.SyndEntryImpl mais il ne fournit aucune fonction pour le réglage ou l'obtention de l'image.

Aidez-moi à résoudre ce problème. Merci d'avance.

Répondre

1

The RSS spec ne spécifie pas d'éléments d'image pour les entrées, mais vous pouvez l'étendre avec Image namespace.

solution courte pourrait ressembler à ceci:

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

Cela se traduira par xml valide:

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

façon plus robuste est de create a custom module comme ils l'ont fait here et here.