Как вы собираетесь получать содержимое RSS-канала с Римом и Скалой? - PullRequest
3 голосов
/ 14 октября 2011

Сегодня я играл с Rome 1.0 с помощью scala, и хотя я смог получить вкладки заголовка, описания и т. Д., Он говорит, что getContent () не существует.

   val url = "http://www.codecommit.com/blog/ruby/monads-are-not-metaphors/feed"
   val feed: SyndFeed = new SyndFeedInput().build(new XmlReader(new URL(url)))

   var rss_title = feed.getTitle()
   var rss_ex = feed.getTitleEx.getValue()
   var rss_desc = feed.getDescription()
   var rss_content = feed.getContent()  

<---- этот, похоже, не существует, хотя, глядя на API, он должен работать. </p>

1 Ответ

2 голосов
/ 15 октября 2011

Фид представляет несколько записей, а сами записи имеют метод getContents ().Вот полный рабочий пример (предполагается, что у вас есть рим 1.0 на пути к классам):

import com.sun.syndication.feed.synd.{SyndContent, SyndEntry, SyndFeed}
import com.sun.syndication.io.{SyndFeedInput, XmlReader}
import java.net.URL
import java.util.{List => JList}
import scala.collection.JavaConverters._

object RomeApp extends App {
  val url = "http://www.codecommit.com/blog/ruby/monads-are-not-metaphors/feed"
  val feed: SyndFeed = new SyndFeedInput().build(new XmlReader(new URL(url)))
  val rss_title = feed.getTitle
  val rss_ex = feed.getTitleEx.getValue
  val rss_desc = feed.getDescription
  val rss_entries = feed.getEntries.asInstanceOf[JList[SyndEntry]].asScala
  for (entry <- rss_entries;
       content <- entry.getContents.asInstanceOf[JList[SyndContent]].asScala) {
    println("------------------------------")
    println(content.getValue)
  }   
}

Обратите внимание, что отсутствие универсальных элементов в Java API делает его немного громоздким, библиотека может использовать некоторые pimping.

...