2009-11-09 4 views
35

Кто-нибудь знает о хорошей библиотеке scala для удаления/сжатия пробелов из XML?Scala: удаление пробелов XML?

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

к:

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

Извините ... удалил свой ответ. Теперь я вижу, что это было совершенно неправильно. Я не должен действительно программировать, читая о квантовых операторах. –

ответ

56

scala.xml .Utility.trim() должен делать то, что вы хотите:

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

По какой-то стоит, это то, что я получил сейчас происходит в "свернуть свою собственную" стратегию:

 
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

Это похоже на хорошее решение. Зачем вам нужна библиотека, чтобы делать то, что вы делаете в 7 строках? –

+0

Главным образом потому, что я еще не убедил себя, что мой код на 100% прав. – harryh

+11

Поскольку библиотека является 1 строкой, она находится в стандартной библиотеке. –

Смежные вопросы