.net - trying to serialize and deserialize entity object in c# -
i using 2 methods below serialize/deserialize entity framework object (ver. 4.0). tried several ways accomplish this, , had no luck. serialization works fine. nice xml formatted string, when try deserialize error in xml. how possible?
thanks.
public static string serializeobject(object obj) { xmlserializer ser = new xmlserializer(obj.gettype()); system.text.stringbuilder sb = new system.text.stringbuilder(); system.io.stringwriter writer = new system.io.stringwriter(sb); ser.serialize(writer, obj); xmldocument doc = new xmldocument(); doc.loadxml(sb.tostring()); string xml = doc.innerxml; return xml; } public static object deserializeanobject(string xml, type objtype) { xmldocument doc = new xmldocument(); doc.loadxml(xml); xmlnodereader reader = new xmlnodereader(doc.documentelement); xmlserializer ser = new xmlserializer(objtype); object obj = ser.deserialize(reader); return obj; }
i use generic methods serialize , deserialize:
/// <summary> /// serializes object xml string. /// </summary> /// <typeparam name="t">datatype t.</typeparam> /// <param name="toserialize">object of type t serialized.</param> /// <returns>xml string of serialized type t object.</returns> public static string serializetoxmlstring<t>(t toserialize) { string xmlstream = string.empty; using (memorystream memstream = new memorystream()) { xmlserializer xmlserializer = new xmlserializer(typeof(t)); xmltextwriter xmlwriter = new xmltextwriter(memstream, encoding.utf8); xmlserializer.serialize(xmlwriter, toserialize); xmlstream = utf8bytearraytostring(((memorystream)xmlwriter.basestream).toarray()); } return xmlstream; } /// <summary> /// deserializes xml string of type t. /// </summary> /// <typeparam name="t">datatype t.</typeparam> /// <param name="xmlstring">input xml string read.</param> /// <returns>returns rehydrated object of type t.</returns> public static t deserializexmlstring<t>(string xmlstring) { t tempobject = default(t); using (memorystream memorystream = new memorystream(stringtoutf8bytearray(xmlstring))) { xmlserializer xs = new xmlserializer(typeof(t)); xmltextwriter xmltextwriter = new xmltextwriter(memorystream, encoding.utf8); tempobject = (t)xs.deserialize(memorystream); } return tempobject; } // convert array string public static string utf8bytearraytostring(byte[] arrbytes) { return new utf8encoding().getstring(arrbytes); } // convert string array public static byte[] stringtoutf8bytearray(string xmlstring) { return new utf8encoding().getbytes(xmlstring); }
Comments
Post a Comment