4

RSS/Atom フィードを解析するために ROME パーサーを使用しています。問題は、ニュース フィード/エントリの画像 URL が表示されないことです。問題の一部は、フィードに一貫性がなく、画像の URL が一貫していないことにもあります。

<media:thumbnail...>BBC ニュースは要素内に画像の URL を配置します

<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

フィードから画像の URL を取得する方法を見つけることができました。問題の一部は、Rome が Generics を使用していないことにあります。そのため、要素を適切に読み取ることができなかったため<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 に答える