2012-01-22 14 views
8

सबसे पहले:आप scala.xml के साथ xml दस्तावेज़ जानकारी कैसे जोड़ते हैं?

  • मैं विरोधी एक्सएमएल, और तराजू के बारे में पता कर रहा हूँ, लेकिन मैं मानक scala.xml उपयोग करने के लिए
  • मैं, स्पष्ट तरीकों का उपयोग कर xml दस्तावेज़ निर्माण करने के लिए पसंद करते हैं अंतर्निहित एक्सएमएल के साथ नहीं चाहते हैं वाक्य रचना स्काला

ठीक है में बनाया गया है, इसलिए मैं कोड के इस तरह के टुकड़ा है:

val text = new scala.xml.Text("just a text") 
val root = new scala.xml.Elem(null,"element",null,scala.xml.TopScope,text) 
val doc = new scala.xml.Document() 
doc.docElem = root 
println(doc.toString()) 

लगभग अच्छा लेकिन परिणाम के रूप में मैं:

<element>just a text</element> 

और मैं एक्सएमएल शीर्ष लेख बहुत पाने के लिए, की तरह चाहते हैं:

<?xml version="1.0"?> 
<element>just a text</element> 

प्रश्न: यह कैसे जोड़ने के लिए?

बेशक सामान्य ज्ञान के तरीके में, अतिरिक्त वर्बैटिम println हेडर के साथ कुछ हैकिंग नहीं ;-)।

+1

आप स्काला की तरह एक भयानक भाषा तुम कहाँ कह सकते हैं 'वैल एक्सएमएल = इनपुट' और आप न कि पसंद करते हैं का उपयोग कर रहे जोड़ने के लिए है? ;) इसकी ओकी, क्योंकि यह आपकी पसंद है, लेकिन क्या आप मुझे बता सकते हैं कृपया "अन्य तरीके" का उपयोग करना बेहतर क्यों है? – OverStack

+0

@ ओवरस्टैक, क्योंकि यह सुविधा वास्तव में एक दोष है। मेरे द्वारा शब्द, यह किसी भी टाइपो के लिए बहुत नाजुक है, इसलिए जब तक यह आपको काटता है तब तक आपको अपनी त्रुटि दिखाई नहीं देती है। दूसरी बात - तथ्य यह है कि तथ्य मौजूद है, इसका मतलब यह नहीं है कि आपको इसका उपयोग करना चाहिए। दूसरों से शब्द: http://www.codecommit.com/blog/scala/working-with-scalas-xml-support और वीबी में एचटीएमएल के बारे में एक टुकड़ा था, लेकिन मुझे अभी यह नहीं मिल रहा है। – greenoldman

+0

@ ग्रीनल्डमैन क्या यह सिर्फ मुझे है या आपका कोड एक नल पॉइंटर अपवाद देता है? –

उत्तर

7

एकमात्र समाधान मैंने पाया निम्नलिखित कोड

val writer : PrintWriter = new PrintWriter(System.out) 
XML.write(writer,root,"utf-8",true,null) 
writer.flush() 
+0

आपको बहुत धन्यवाद, यह अजीब बात है कि scala.xml में कुछ और प्रत्यक्ष नहीं है। – greenoldman

+0

एक और बात - यह प्रिंटरवाइटर की तुलना में 'स्ट्रिंगवाइटर' का उपयोग करने के लिए अधिक उपयोगी (सामान्य रूप से) है (क्योंकि तब स्ट्रिंग के रूप में आउटपुट एक्सएमएल प्राप्त करना बहुत आसान है)। – greenoldman

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