2009-11-09 5 views
35

XML에서 공백 제거/압축을 수행하는 훌륭한 스칼라 라이브러리를 아는 사람이 있습니까?스칼라 : XML 공백 제거?

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

에 :

 
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

죄송합니다 ... 내 대답을 삭제했습니다. 나는 이것이 완전히 틀렸음을 알 수있다. 나는 정말로 양자 연산자에 대해 읽는 동안 프로그래밍을해서는 안된다. –

답변

56

scala.xml : 그것은 가치가 무엇이든 들어

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

, 이것은 내가 전략 "내 자신의 롤"지금 일어나고있어 한 것입니다 .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> 
+0

이것은 좋은 해결책 인 것 같습니다. 왜 당신은 7 줄로하고있는 일을하기 위해 도서관이 필요합니까? –

+0

주로 내 코드가 아직 100 % 정확함을 확신하지 못했기 때문입니다. – harryh

+11

라이브러리가 1 줄이므로 표준 라이브러리에 있습니다. –