I love generics, and I when I come across a requirement where I had to serialize a variety of objects to xml and deserialize back to the object, generics was the way to go, and resulted in following methods.
// De-Serializes the request into type object
public static
XmlDocument SerializeToXml(T objectToSerialize)
{
XmlDocument serializedXml =
new XmlDocument();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream momoryStream =
new MemoryStream())
{
XmlTextWriter xmlTextWriter =
new XmlTextWriter(momoryStream,
null);
xmlSerializer.Serialize( xmlTextWriter, objectToSerialize);
// Rewind the Stream.
momoryStream.Seek(0,
SeekOrigin.Begin);
// load from stream;
serializedXml.Load( momoryStream);
}
return serializedXml;
}
// De-Serializes the request into class object
public static T DeserializeXml(XmlNode xmlToDesearialized)
{
if (xmlToDesearialized ==
null) throw new
ArgumentNullException(" xmlToDesearialized");
T deserializedObject =
default(T);
XmlSerializer xmlSerializer =
new XmlSerializer(typeof(T));
using (StringReader stringReader =
new StringReader( xmlToDesearialized.OuterXml))
{
XmlTextReader xmlTextReader =
new XmlTextReader(stringReader);
deserializedObject = (T)xmlSerializer.Deserialize( xmlTextReader);
}
return deserializedObject;
}
No comments:
Post a Comment