4

我正在使用 ROME 解析器来解析我的 RSS/Atom 提要。现在的问题是它没有给出新闻提要/条目的图像 URL。部分问题还在于提要不一致,并且它们放置的图像网址不一致。

BBC 新闻将图像 url 放入<media:thumbnail...>元素中

<item> 
  <title>Dementia in care homes 'more common'</title>  
  <description>Eight out of 10 residents in care homes are now thought to have dementia or severe memory problems, new data shows.</description>  
  <link>http://www.bbc.co.uk/news/health-21579394#sa-ns_mchannel=rss&amp;ns_source=PublicRSS20-sa</link>  
  <guid isPermaLink="false">http://www.bbc.co.uk/news/health-21579394</guid>  
  <pubDate>Tue, 26 Feb 2013 00:28:31 GMT</pubDate>  
  <media:thumbnail width="66" height="49" url="http://news.bbcimg.co.uk/media/images/66064000/jpg/_66064884_c0016428-geriatric_care-spl.jpg"/>  
  <media:thumbnail width="144" height="81" url="http://news.bbcimg.co.uk/media/images/66064000/jpg/_66064885_c0016428-geriatric_care-spl.jpg"/> 
</item>

但是一些新闻提要将图像放在附件元素中。有些提要根本没有它们。

所以我的问题是;如果它们出现在提要中,我该如何获取它们。到目前为止,Rome API 对我来说一直很完美;但现在我陷入了困境。

4

1 回答 1

9

我可以想办法从提要中获取图片网址。部分问题是因为罗马不使用泛型;所以无法<media:thumbnail..正确读取元素,因此丢失了作为属性的图像的 url。

调试后我可以找出确切的参数化类型,然后很容易:)

 List<Element> foreignMarkups = (List<Element>) entry.getForeignMarkup();
 for (Element foreignMarkup : foreignMarkups) {
  String imgURL = foreignMarkup.getAttribute("url").getValue(); 
    //read width and height
 }

这个博客帮助我了解了罗马的建筑

我还发现了一些新闻提要;图片的 url 位于 Enclosure 元素内,如下所示:

<enclosure url="http://www.wired.com/reviews/wp-content/uploads/2013/02/lights_remote_1-200x100.jpg" type="image/jpeg" length="48000"/>

enclosure因此,如果<media:thumbnail..提要中不存在元素,我也会检查元素:

  List<SyndEnclosure> encls = entry.getEnclosures();
  if(!encls.isEmpty()){
    for(SyndEnclosure e : encls){
    String imgURL = e.getUrl().toString();
    }                       
  }
于 2013-02-28T05:35:41.120 回答