在scala中递归写入xml节点列表

时间:2013-07-27 12:44:58

标签: xml scala recursion nodes

我正在学习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节点?

1 个答案:

答案 0 :(得分:3)

你正在做的一切正确!您只需使用map代替foreach

scala中的

foreach会返回Unit