2009-11-09 15 views
35

Ktoś wie o dobrej bibliotece scala do usuwania/kompresji białek z XML?Scala: Usuwanie spacji XML?

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

do:

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

Przepraszam ... usunąłem moją odpowiedź. Teraz widzę, że było całkowicie nie tak. Nie powinienem robić programowania podczas czytania o operatorach kwantowych. –

Odpowiedz

56

scala.xml .Utility.trim() powinien zrobić, co chcesz:

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

Na co warto, to co mam dzieje się teraz w "toczyć własną" strategię:

 
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

To wygląda na dobre rozwiązanie. Dlaczego potrzebujesz biblioteki, aby robić to, co robisz w 7 liniach? –

+0

Głównie dlatego, że jeszcze nie przekonałem się, że mój kod jest w 100% poprawny. – harryh

+11

Ponieważ biblioteka ma 1 linię i znajduje się w standardowej bibliotece. –

Powiązane problemy