Сколько бы это ни стоило, это то, что я сейчас делаю в стратегии «брось свои»:
def compactXml(xml: Node): Node = {
(xml map {
case Elem(prefix, label, attributes, scope, children @ _*) => {
Elem(prefix, label, attributes, scope, children.map(compactXml(_)) :_*)
}
case Text(data) => Text(data.trim)
case x => x
}).first
}