Mega Code Archive

 
Categories / C# / XML
 

DeserializesSerializes an xml document back into an object

//New BSD License (BSD) //http://twitterxml.codeplex.com/license using System; using System.Text; using System.IO; using System.Xml; using System.Xml.Serialization; namespace TwitterXml.Utilities {     public class XmlSerializerHelper     {         /// <summary>         /// Deserializes an xml document back into an object         /// </summary>         /// <param name="xml">The xml data to deserialize</param>         /// <param name="type">The type of the object being deserialized</param>         /// <returns>A deserialized object</returns>         public static object Deserialize(XmlDocument xml, Type type)         {             XmlSerializer s = new XmlSerializer(type);             string xmlString = xml.OuterXml.ToString();             byte[] buffer = ASCIIEncoding.UTF8.GetBytes(xmlString);             MemoryStream ms = new MemoryStream(buffer);             XmlReader reader = new XmlTextReader(ms);             Exception caught = null;             try             {                 object o = s.Deserialize(reader);                 return o;             }             catch (Exception e)             {                 caught = e;             }             finally             {                 reader.Close();                 if (caught != null)                     throw caught;             }             return null;         }         /// <summary>         /// Serializes an object into an Xml Document         /// </summary>         /// <param name="o">The object to serialize</param>         /// <returns>An Xml Document consisting of said object's data</returns>         public static XmlDocument Serialize(object o)         {             XmlSerializer s = new XmlSerializer(o.GetType());             MemoryStream ms = new MemoryStream();             XmlTextWriter writer = new XmlTextWriter(ms, new UTF8Encoding());             writer.Formatting = Formatting.Indented;             writer.IndentChar = ' ';             writer.Indentation = 5;             Exception caught = null;             try             {                 s.Serialize(writer, o);                 XmlDocument xml = new XmlDocument();                 string xmlString = ASCIIEncoding.UTF8.GetString(ms.ToArray());                 xml.LoadXml(xmlString);                 return xml;             }             catch (Exception e)             {                 caught = e;             }             finally             {                 writer.Close();                 ms.Close();                 if (caught != null)                     throw caught;             }             return null;         }     } }