2009-07-31 19 views
12

प्रति एक्सस्ट्रीम के अक्सर पूछे जाने वाले प्रश्न इसका डिफ़ॉल्ट पार्सर यूटीएफ -8 दस्तावेज़ एन्कोडिंग को संरक्षित नहीं करता है, और किसी को अपना स्वयं का एन्कोडर प्रदान करना होगा। कोई इसे कैसे करता है?एक्सस्ट्रीम फ्रेमवर्क का उपयोग करके मैं यूटीएफ -8 को कैसे एन्कोड कर सकता हूं?

धन्यवाद!

उत्तर

33

यूटीएफ -8 एन्कोडिंग के साथ एक लेखक बनाएं। एक्सस्ट्रीम की toXML विधि के लिए एक तर्क के रूप में लेखक को पास करें।

XStream xstream = new xStream(); 
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 

Writer writer = new OutputStreamWriter(outputStream, "UTF-8"); 

xStream.toXML(object, writer); 
String xml = outputStream.toString("UTF-8"); 

आप एक्सएमएल घोषणा को शामिल करने के लिए उस लेखक का भी उपयोग कर सकते हैं।

writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); 
xStream.toXML(object, writer); 
+2

+1 धन्यवाद - सिर्फ इस और भर में ठोकर खाई इसे आसानी से दस्तावेज़ों में नहीं मिला। – davek

+0

धन्यवाद, यह सिर्फ मेरी समस्या हल हो गया। – Jaycee

11

एक और समाधान एक्सस्ट्रीम-ऑब्जेक्ट को ड्राइवर के माध्यम से सही एन्कोडिंग के साथ शुरू करना होगा। DomDriver का उपयोग करते हुए इस विचार करेंगे की तरह:

XStream xstream = new XStream(new DomDriver("UTF-8")); 

(डिफ़ॉल्ट) PrettyPrintWriter सही एन्कोडिंग के साथ एक outputstream से लिपटे हो जाएगा। आप नहीं Xstream के वर्तमान संस्करण के साथ UTF-8 हैडर इस तरह से हालांकि जोड़ सकते हैं ...

+0

लेकिन डोमड्रिवर धीमा है। –

3

, @ Jeromy के उदाहरण इस प्रकार दिखाई देगा:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8"); 
HierarchicalStreamWriter xmlWriter = new PrettyPrintWriter(writer); 
xstream.marshal(object, xmlWriter); 
return new String(stream.toByteArray(), "UTF-8"); 
संबंधित मुद्दे

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