从 RSS 提要 Scala 中提取的记录太多

Too many records extracted from RSS feed Scala

我需要从XML中提取一些数据并将其写入数据库。我为此创建了记录实体:

case class Record (title: String, description: String)

我想为记录实体写标题和描述。如果我在 XML 中有大约 12 条记录,我想输出 12 条记录。但是,我得到 12*12 条记录的输出,这意味着每条记录打印 12 次。可能是什么原因?

这里是主要方法:

def main(args: Array[String]): Unit = {
    val response: HttpResponse[String] = Http("link")
      .timeout(connTimeoutMs = 2000, readTimeoutMs = 5000)
      .asString
    val xmlString = response.body
    val xml = XML.loadString(xmlString)
    val titleNodes = (xml \ "item" \ "title")
    val descriptionNodes = (xml \ "item" \ "description")

    val output: Seq[Record] = for{
      title <- titleNodes
      description <- descriptionNodes
    }yield Record(title.text, description.text)
    output.foreach(println)
}

我最近才开始使用 Scala 编写代码,所以我将不胜感激任何建议!

假设有 12 个项目,每个项目有一个标题和一个描述,这意味着有 12^2 对可能的标题和描述,这就是您的代码正在计算的内容。如果您只想要每个项目的标题和描述,那么您的外循环应该在项目上:

for {
  item <- xml \ "item"
  title <- item \ "title"
  description <- item \ "description"
} yield Record(title.text, description.text)