2009-11-09 249 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

对不起...删除了我的答案。现在我可以看到它完全错了。在阅读量子操作员时,我不应该编程。 – 2009-11-09 22:20:57

回答

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

这看起来很不错。为什么你需要一个图书馆来做你在做的事情? – 2009-11-09 22:10:44

+0

主要是因为我还没有确信我的代码是100%正确的。 – harryh 2009-11-09 22:15:18

+11

因为库是1行,它在标准库中。 – 2012-05-16 15:47:09