2009-11-09 20 views
35

Qualcuno sa di una buona libreria di scala per eseguire la rimozione/compattazione degli spazi bianchi da XML?Scala: rimozione degli spazi bianchi XML?

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

a:

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

Spiacente ... ha cancellato la mia risposta. Ora posso vedere che era completamente sbagliato. Non dovrei davvero fare programmazione mentre leggo gli operatori quantistici. –

risposta

56

scala.xml .Utility.trim() dovrebbe fare quello che vuoi:

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

Per quel che vale, questo è quello che ho in corso oggi nel "rotolare il mio" strategia:

 
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

Questa sembra una buona soluzione. Perché hai bisogno di una biblioteca per fare ciò che stai facendo in 7 righe? –

+0

Principalmente perché non mi sono ancora convinto che il mio codice sia corretto al 100%. – harryh

+11

Perché la libreria è 1 riga e si trova nella libreria standard. –

Problemi correlati