嗯,
scala> val x = <value key="attr"></value>
x: scala.xml.Elem = <value key="attr"></value>
scala> x.min
min minBy minimizeEmpty
scala> x.minimizeEmpty
res0: Boolean = false
scala> val x = <value key="attr"/>
x: scala.xml.Elem = <value key="attr"/>
scala> x.minimizeEmpty
res1: Boolean = true
scala> val pw = new java.io.PrintWriter(Console.out)
pw: java.io.PrintWriter = java.io.PrintWriter@2b50150
scala> xml.XML.write(pw, x, "", false, null)
scala> pw.flush
<value key="attr"/>
scala> val x = <value key="attr"></value>
x: scala.xml.Elem = <value key="attr"></value>
scala> xml.XML.write(pw, x, "", false, null) ; pw.flush()
<value key="attr"></value>
scala> val x = <value key="attr"/>
x: scala.xml.Elem = <value key="attr"/>
scala> xml.XML.write(pw, x, "", false, null) ; pw.flush()
<value key="attr"/>
scala> xml.XML.write(pw, x, "", false, null, xml.MinimizeMode.Never) ; pw.flush()
<value key="attr"></value>
显然,除了 Elem 之外还有 NodeSeq:
scala> val n: NodeSeq = new xml.Unparsed("""<value key="attr"/>""")
n: scala.xml.NodeSeq = <value key="attr"/>
scala> xml.XML.write(pw, n.head, "", false, null, xml.MinimizeMode.Never) ; pw.flush()
<value key="attr"/>
scala>
显示 OP 指出的错误:
$ scala
Welcome to Scala version 2.11.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import xml._
import xml._
scala> val pw = new java.io.PrintWriter(Console.out)
pw: java.io.PrintWriter = java.io.PrintWriter@17d99928
scala> val x = <value key="attr"><value key="another"/></value>
x: scala.xml.Elem = <value key="attr"><value key="another"/></value>
scala> xml.XML.write(pw, x, "", false, null, xml.MinimizeMode.Never) ; pw.flush()
<value key="attr"><value key="another"/></value>
scala>
https://github.com/scala/scala-xml/blob/master/src/main/scala/scala/xml/Utility.scala#L237
编辑,显示它在 2.12 中已修复:
$ scala
Welcome to Scala 2.12.3 (OpenJDK 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.
scala> import xml._
import xml._
scala> val pw = new java.io.PrintWriter(Console.out)
pw: java.io.PrintWriter = java.io.PrintWriter@1a256d80
scala> val x = <value key="attr"><value key="another"/></value>
x: scala.xml.Elem = <value key="attr"><value key="another"/></value>
scala> xml.XML.write(pw, x, "", false, null, xml.MinimizeMode.Never) ; pw.flush()
<value key="attr"><value key="another"></value></value>
scala>
https://github.com/scala/scala-xml/commit/b696beaa481a11a5276186b9e2bc2be3cb32a922