सवाल स्कैला: एक्सएमएल व्हाइटस्पेस रिमूवल?


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

<Foo>
  <bar> हैलो वर्ल्ड </ bar>
  <baz> xxx </ baz>
</ Foo>

सेवा मेरे:

<foo> <bar> हैलो वर्ल्ड </ bar> <baz> xxx </ baz> </ foo>

37
2017-11-09 21:22


मूल


क्षमा करें ... मेरा जवाब हटा दिया। अब मैं देख सकता हूं कि यह पूरी तरह से गलत था। क्वांटम ऑपरेटरों के बारे में पढ़ने के दौरान मुझे वास्तव में प्रोग्रामिंग नहीं करना चाहिए। - Flaviu Cipcigan


जवाब:


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>

59
2017-11-10 03:35





जो कुछ भी इसके लायक है, वही है जो मुझे "अपनी खुद की रोल" रणनीति में चल रहा है:

def compactXml (xml: नोड): नोड = {
  (एक्सएमएल मानचित्र {
    केस एलेम (उपसर्ग, लेबल, विशेषताएँ, गुंजाइश, बच्चे @ _ *) => {
      एलेम (उपसर्ग, लेबल, गुण, दायरा, बच्चों। मैप (कॉम्पैक्टएक्सएमएल (_)): _ *)
    }
    केस टेक्स्ट (डेटा) => टेक्स्ट (data.trim)
    मामला एक्स => एक्स
  })।प्रथम
}

2
2017-11-09 22:06



यह एक अच्छा समाधान की तरह दिखता है। 7 लाइनों में आप जो कर रहे हैं, उसे करने के लिए आपको लाइब्रेरी की आवश्यकता क्यों है? - David Crawshaw
मुख्य रूप से क्योंकि मैंने अभी तक खुद को आश्वस्त नहीं किया है कि मेरा कोड अभी तक 100% सही है। - harryh
क्योंकि लाइब्रेरी 1 लाइन है, और यह मानक पुस्तकालय में है। - Jürgen Strobel