2010-09-23 19 views
5

मैं किसी ऑब्जेक्ट को क्रमबद्ध करने की कोशिश कर रहा हूं और जेनरेट स्ट्रिंग में \ 0 (नल) वर्ण जोड़ा जा रहा है। क्यूं कर?एक्सएमएल सीरियलाइजेशन 0 (बैकस्लैश 0 या नल) चरित्र को जोड़ रहा है?

मेरे कोड:

XmlSerializer serializer = new XmlSerializer(typeof(Common.PlanogramSearchOptions)); 
MemoryStream memStream = new MemoryStream(); 
serializer.Serialize(memStream, searchOptions); 

string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0 

मेरा काम के आसपास कोई रिक्त स्ट्रिंग

xml.Replace("\0", string.Empty) 

धन्यवाद के साथ अशक्त चरित्र को बदल रहा है।

उत्तर

10

MemoryStream.GetBuffer()MemoryStream (जो इसमें संग्रहीत वास्तविक डेटा से बड़ा है) के अंतर्निहित बफर को देता है। आप MemoryStream.ToArray() चाहते हैं।

हालांकि, मैं तुम्हें एक StringWriterMemoryStream के बजाय का उपयोग करें, ताकि आप UTF-8 रूपांतरण से बचने कर सकते हैं:

XmlSerializer serializer = new XmlSerializer(typeof(PlanogramSearchOptions)); 
StringWriter writer = new StringWriter(); 
serializer.Serialize(writer, searchOptions); 
string xml = writer.ToString(); 

यह भी देखें: Serialize an object to string

+0

बहुत बढ़िया! यह आपके सुझाव के लिए काम करता है और धन्यवाद ... मैं बोर्ड भर में इसे लागू करूंगा। धन्यवाद। –

+0

धन्यवाद। जब मैं एक अलग संदर्भ में ToArray का मतलब था तो मैं MemoryStream.GetBuffer का उपयोग कर रहा था। आखिरकार मेरा रास्ता यहां मिला। :) – Greg

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