<pre
class
=
"csharp"
><pre
class
=
"csharp"
><pre
class
=
"csharp"
>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
using System.Xml;
namespace
Common.Utility.XMLSerialization
{
public
class
DataContractSerializer<T>
{
public
static
string ToXMLString(T meta)
{
DataContractSerializer dcs =
new
DataContractSerializer(typeof(T));
string xmlStr = string.
Empty
;
using (MemoryStream ms =
new
MemoryStream())
{
try
{
dcs.WriteObject(ms, meta);
xmlStr = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
}
catch
{
throw
;
}
}
return
xmlStr;
}
public
static
string ToXMLString(object value, IEnumerable<Type> knownTypes = null)
{
try
{
DataContractSerializer dataContractSerializer =
new
DataContractSerializer(value.
GetType
(), knownTypes);
using (MemoryStream ms =
new
MemoryStream())
{
dataContractSerializer.WriteObject(ms, value);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader sr =
new
StreamReader(ms))
{
return
sr.ReadToEnd();
}
}
}
catch
{
throw
;
}
}
public
static
T ReadFromXML(string xmlStr)
{
T meta;
try
{
DataContractSerializer dcs =
new
DataContractSerializer(typeof(T));
using (TextReader reader =
new
StringReader(xmlStr))
{
using (XmlReader xReader = XmlReader.Create(reader))
{
meta = (T)dcs.ReadObject(xReader);
}
}
}
catch
{
throw
;
}
return
meta;
}
public
static
T ReadFromXML(string xmlStr, IEnumerable<Type> knownTypes = null)
{
T meta;
try
{
DataContractSerializer dcs =
new
DataContractSerializer(typeof(T), knownTypes);
using (TextReader reader =
new
StringReader(xmlStr))
{
using (XmlReader xReader = XmlReader.Create(reader))
{
meta = (T)dcs.ReadObject(xReader);
}
}
}
catch
{
throw
;
}
return
meta;
}
}
}