我正在学习scala,并且在编写xml文件时遇到问题。
假设我有一个
case class Coordinate(x: Int, y: Int)
和
val l = List(Coordinate(1,3), Coordinate(2,4), Coordinate(3,5))
我需要使用以下格式打印xml文件:
<root>
<object>
<coord x="1" y="3"/>
<coord x="2" y="4"/>
<coord x="3" y="5"/>
</object>
</root>`
我正在尝试以递归方式实现它,因此它可以处理大量的Coordinates数据和多个
<object>.
我试图首先打印输出以检查结果:
def convertToXML(l: List[Coordinate]): Unit = {
def eachCoordToXML(coord: Coordinate): scala.xml.Node = {
<coord x={ coord.x.toString } y={ coord.y.toString } />
}
val newObject =
<object>
{ l.foreach(eachCoordToXML(_)) }
</object>
println(newObject.mkString)
}
结果出现了类似的内容
<object>
</object>
任何人都可以在这里指导我,我出错了什么? 或者是否有更好/更有效的方法来递归写入xml节点?
答案 0 :(得分:3)
你正在做的一切正确!您只需使用map
代替foreach
!
foreach
会返回Unit
。