I've been using Object<>Xml serialization in.NET based on for a while. I decided to enhance it a tad bit with some generics, so I could use it more broadly. Here's what I came up with:
using System.Collections.Generic;using System.Text;using System.Xml;using System.IO;using System.Xml.Serialization;
///
/// To convert a Byte Array of Unicode values (UTF-8 encoded) to a complete String.///
/// Unicode Byte Array to be converted to String
/// String converted from Unicode Byte Array
private static string UTF8ByteArrayToString(byte[] characters)
{
UTF8Encoding encoding = new UTF8Encoding;
string constructedString = encoding.GetString(characters);
return (constructedString);
}
///
/// Converts the String to UTF8 Byte array and is used in De serialization///
///
///
private static Byte[] StringToUTF8ByteArray(string pXmlString)
{
UTF8Encoding encoding = new UTF8Encoding;
byte[] byteArray = encoding.GetBytes(pXmlString);
return byteArray;
}
///
/// Serialize an object into an XML string///
///
///
///
public static string SerializeObject(T obj)
{
try {
string xmlString = null;
MemoryStream memoryStream = new MemoryStream;
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, obj);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
xmlString = UTF8ByteArrayToString(memoryStream.ToArray); return xmlString;
} catch {
return string.Empty;
}
}
///
/// Reconstruct an object from an XML string///
///
///
public static T DeserializeObject(string xml)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(xml));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return (T)xs.Deserialize(memoryStream);
}