我有这段代码:
val list1 = Seq("One", "Two", "Three")
val list2 = Seq("Four", "Five", "Six")
val xml = <Root>
{
list1.map { item =>
<Item>{item}</Item>
}
list2.map { item =>
<Item>{item}</Item>
}
}
</Root>
它正在创建一个这样的XML文档:
<Root>
<Item>Four</Item>
<Item>Five</Item>
<Item>Six</Item>
</Root>
但我的目的是生成这份文件:
<Root>
<Item>One</Item>
<Item>Two</Item>
<Item>Three</Item>
<Item>Four</Item>
<Item>Five</Item>
<Item>Six</Item>
</Root>
我该怎么做?
答案 0 :(得分:1)
您可以尝试在map
ping之前合并2个列表
val list1 = Seq("One", "Two", "Three")
val list2 = Seq("Four", "Five", "Six")
val xml = <Root>
{
(list1 ++ list2).map { item =>
<Item>{item}</Item>
}
}
</Root>
我相信你的情况是,在评估一个块时,Scala会返回最后一个表达式的值。在你的情况下
list2.map { item =>
<Item>{item}</Item>
}
答案 1 :(得分:0)
要回答我自己的问题,似乎XML模板中的{}块只能返回一个NodeSeq值。所以,我需要将每个迭代包装在一个单独的{}。
中val list1 = Seq("One", "Two", "Three")
val list2 = Seq("Four", "Five", "Six")
val xml = <Root>
{
list1.map { item =>
<Item>{item}</Item>
}
}
{
list2.map { item =>
<Item>{item}</Item>
}
}
</Root>