如何在scala中创建有序的xml元素?

时间:2012-01-27 22:20:46

标签: xml scala scala-xml

这对我来说似乎不对 - 为什么元素的顺序从它们的构建顺序改变了?

scala> var list = collection.immutable.TreeSet(1, 3, 2, 5, 0)
list: scala.collection.immutable.TreeSet[Int] = TreeSet(0, 1, 2, 3, 5)

scala> var xml = <list>{ list.map(number => { <number>{number}</number> }) }</list>
xml: scala.xml.Elem = <list><number>3</number><number>1</number><number>2</number><number>5</number><number>0</number></list>

scala> var xml = <list>{ list.map(number => { println(number); <number>{number}</number> }) }</list>
0
1
2
3
5
xml: scala.xml.Elem = <list><number>3</number><number>1</number><number>2</number><number>5</number><number>0</number></list>

1 个答案:

答案 0 :(得分:2)

当您映射TreeSet时,它会创建一个新集。当然,新的Set不使用整数的自然排序,因为它的元素不是整数。实际上,由于Elem没有自然排序,因此新集合是无序的。您可以通过以下方式实现您正在寻找的订单:

var xml = <list>{ list.toSeq map (n => <number>{n}</number>) }</list>