我正在尝试使用java ROME API创建RSS源。我的要求是每个条目都应该包含一个Image,如下所示:
<?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 ROME api的新手。它提供了包:: com.rometools.rome.feed.synd.SyndImageImpl
来设置/获取完整Feed中的图像项,但不在单个条目中。对于RSS feed中的条目,它具有包:: com.rometools.rome.feed.synd.SyndEntryImpl
,但它不提供任何设置或获取图像的功能。
请帮我解决此问题。 提前谢谢。
答案 0 :(得分:2)
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一样。