Scala的人类可读XML输出?

Rex*_*err 7 xml scala

Scala似乎对你输入的XML做了两件事,这使得它不会变得易于解析,但却使其可读性降低:

首先,它扩展了自我关闭的标签:

scala> <tag/>
res109: scala.xml.Elem = <tag></tag>
Run Code Online (Sandbox Code Playgroud)

其次,它将属性加密为随机顺序,就像将它们放入哈希集中一样:

scala> <tag a="a" b="b" c="c" d="d"/>         
res110: scala.xml.Elem = <tag d="d" a="a" c="c" b="b"></tag>
Run Code Online (Sandbox Code Playgroud)

总之,这些共同导致XML的可读性大大降低(至少在我看来).我对XML库不是很熟悉; 有没有办法执行xml到字符串的转换,产生一个紧凑的人类可读形式?(如果不是默认情况下,通过递归和编写自己的字符串转换 - 或者是否有太多特殊情况潜伏在那里?)

Dan*_*ral 6

大多数情况下,请看scala.xml.Utility.toXml.虽然属性事物没有解决方案(据我所知).

scala> xml.Utility.toXML(<a/>, minimizeTags = true)
res13: StringBuilder = <a />
Run Code Online (Sandbox Code Playgroud)

您可能也想看一下scala.xml.PrettyPrinter.