2009-11-09 9 views
35

किसी को भी एक्सएमएल से व्हाइटस्पेस हटाने/कॉम्पैक्शन करने के लिए एक अच्छी स्कैला लाइब्रेरी के बारे में पता है?स्कैला: एक्सएमएल व्हाइटस्पेस रिमूवल?

 
<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 लाइन है, और यह मानक पुस्तकालय में है। –

संबंधित मुद्दे