2009-11-09 15 views
35

¿Alguien sabe de una buena biblioteca scala para eliminar/compactar espacios en blanco de XML?Scala: eliminación de espacio en blanco XML?

 
<foo> 
    <bar>hello world</bar> 
    <baz> xxx </baz> 
</foo> 

a:

 
<foo><bar>hello world</bar><baz>xxx</baz></foo> 
+0

Lo siento ... borré mi respuesta. Ahora puedo ver que fue completamente incorrecto. Realmente no debería hacer programación mientras leo sobre operadores cuánticos. –

Respuesta

56

scala.xml .Utility.trim() debe hacer lo que quiera:

scala> val x = <foo> 
    | <bar>hello world</bar> 
    | <baz> xxx </baz> 
    | </foo> 
x: scala.xml.Elem = 
<foo> 
     <bar>hello world</bar> 
     <baz> xxx </baz> 
     </foo> 

scala> scala.xml.Utility.trim(x) 
res0: scala.xml.Node = <foo><bar>hello world</bar><baz>xxx</baz></foo> 
2

Por si sirve de algo, esto es lo que tengo pasando ahora en el "rodar mi propia" estrategia:

 
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 
} 
+0

Esto parece una buena solución. ¿Por qué necesitas una biblioteca para hacer lo que estás haciendo en 7 líneas? –

+0

Principalmente porque aún no me he convencido de que mi código es 100% correcto todavía. – harryh

+11

Porque la biblioteca tiene 1 línea y está en la biblioteca estándar. –

Cuestiones relacionadas