using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace BWP.B3WeChat.Utils
|
|
{
|
|
/// <summary>
|
|
/// Xml序列化与反序列化
|
|
/// </summary>
|
|
public class XmlUtil
|
|
{
|
|
#region 反序列化
|
|
/// <summary>
|
|
/// 反序列化
|
|
/// </summary>
|
|
/// <param name="type">类型</param>
|
|
/// <param name="xml">XML字符串</param>
|
|
/// <returns></returns>
|
|
public static object Deserialize(Type type, string xml)
|
|
{
|
|
try
|
|
{
|
|
using (StringReader sr = new StringReader(xml))
|
|
{
|
|
XmlSerializer xmldes = new XmlSerializer(type);
|
|
return xmldes.Deserialize(sr);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
|
|
return null;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 反序列化
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
/// <param name="xml"></param>
|
|
/// <returns></returns>
|
|
public static object Deserialize(Type type, Stream stream)
|
|
{
|
|
XmlSerializer xmldes = new XmlSerializer(type);
|
|
return xmldes.Deserialize(stream);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 反序列化
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="xml"></param>
|
|
/// <returns></returns>
|
|
public static T Deserialize<T>(string xml) where T : class
|
|
{
|
|
Type type = typeof(T);
|
|
return (Deserialize(type, xml) as T);
|
|
}
|
|
#endregion
|
|
|
|
#region 序列化
|
|
/// <summary>
|
|
/// 序列化
|
|
/// </summary>
|
|
/// <param name="type">类型</param>
|
|
/// <param name="obj">对象</param>
|
|
/// <returns></returns>
|
|
public static string Serializer(Type type, object obj)
|
|
{
|
|
MemoryStream Stream = new MemoryStream();
|
|
XmlSerializer xml = new XmlSerializer(type);
|
|
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
|
|
namespaces.Add(string.Empty, string.Empty);
|
|
try
|
|
{
|
|
//序列化对象
|
|
xml.Serialize(Stream, obj, namespaces);
|
|
}
|
|
catch (InvalidOperationException)
|
|
{
|
|
throw;
|
|
}
|
|
Stream.Position = 0;
|
|
StreamReader sr = new StreamReader(Stream);
|
|
string str = sr.ReadToEnd();
|
|
|
|
sr.Dispose();
|
|
Stream.Dispose();
|
|
|
|
return str;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|