2010-09-23 15 views
5

Sto provando a serializzare un oggetto e il carattere \ 0 (Null) viene aggiunto alla stringa generata. Perché?Serializzazione Xml che aggiunge il carattere 0 (backslash 0 o Null)?

Il mio codice:

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

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

mio lavoro intorno sta sostituendo il carattere nullo con una stringa vuota

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

Grazie.

risposta

10

MemoryStream.GetBuffer() restituisce il buffer sottostante dello MemoryStream (che è più grande dei dati effettivi memorizzati in esso). Vuoi MemoryStream.ToArray().

Tuttavia, vi consiglio di utilizzare un StringWriter invece di MemoryStream, in modo da poter evitare la conversione UTF-8:

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

Vedi anche: Serialize an object to string

+0

Eccellente! Ha funzionato e grazie per il tuo suggerimento ... lo attuerò a tutti i livelli. Grazie. –

+0

Grazie. Stavo usando MemoryStream.GetBuffer quando intendevo ToArray in un contesto diverso. Ho trovato la mia strada qui alla fine. :) – Greg

Problemi correlati