从 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)
我需要从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)