按 Scala 中的属性排序 xml

Sorting xml by attribute in scala

我可以使用 scala.xml sortby 或 sortwith 按属性对 xml 进行排序吗?

例如:

<x>
  <y a=b/>
  <y a=a/>
</x>

按@a 排序将给出:

<x>
  <y a=a/>
  <y a=b/>
</x>

这是按 "a" 属性排序的一种方法:

val xml = <x>
  <y a="b"/>
  <y a="c"/>
  <y a="a"/>
</x>

val updatedXml = xml.copy(child = (xml \ "y").sortBy(x => (x \ "@a").text)

val printer = new scala.xml.PrettyPrinter(80, 2)
println(printer.format(updatedXml))

这将打印

<x>
  <y a="a"/>
  <y a="b"/>
  <y a="c"/>
</x>