您的位置:首页 > 其它

序列化,反序列化(xml)字符串

2011-12-20 15:55 369 查看
简单方法:

/// <summary>

/// 将object对象序列化成XML

/// </summary>

/// <param name="o"></param>

/// <returns></returns>

public static string ObjectToXML(object o)

{

XmlSerializer ser = new XmlSerializer(o.GetType());

MemoryStream mem = new MemoryStream();

XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);

ser.Serialize(writer, o);

writer.Close();

return Encoding.Default.GetString(mem.ToArray());

}

/// <summary>

/// 将XML反序列化成对象

/// </summary>

/// <param name="s"></param>

/// <param name="t"></param>

/// <returns></returns>

public static object XMLToObject(string s, Type t)

{

XmlSerializer mySerializer = new XmlSerializer(t);

StreamReader mem2 = new StreamReader(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(s)), System.Text.Encoding.UTF8);

return mySerializer.Deserialize(mem2);

}

常用方法:

public static string ObjectToXML<T>(T t)

{

return ObjectToXML<T>( t, Encoding.UTF8 );

}

/// <summary>

/// 将object对象序列化成XML

/// </summary>

/// <param name="o"></param>

/// <returns></returns>

public static string ObjectToXML<T>( T t, Encoding encoding )

{

XmlSerializer ser = new XmlSerializer( t.GetType() );

Encoding utf8EncodingWithNoByteOrderMark = new UTF8Encoding(false);

using ( MemoryStream mem = new MemoryStream() )

{

using (XmlTextWriter writer = new XmlTextWriter(mem, utf8EncodingWithNoByteOrderMark))

{

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

ns.Add( "", "" );

ser.Serialize( writer, t, ns );

return encoding.GetString( mem.ToArray() );

}

}

}

反序列化:

public static T XMLToObject<T>(string source)

{

return XMLToObject<T>( source, Encoding.UTF8 );

}

public static T XMLToObject<T>( string source, Encoding encoding )

{

XmlSerializer mySerializer = new XmlSerializer( typeof( T ) );

using ( MemoryStream stream = new MemoryStream( encoding.GetBytes( source ) ) )

{

return ( T )mySerializer.Deserialize( stream );

}

}

二进制

/// <summary>

/// 二进制方式序列化对象

/// </summary>

/// <param name="testUser"></param>

public static string Serialize<T>(T obj)

{

MemoryStream ms = new MemoryStream();

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(ms, obj);

return ms.ToString();

}

/// <summary>

/// 二进制方式反序列化对象

/// </summary>

/// <returns></returns>

public static T DeSerialize<T>(string str) where T:class

{

MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str));

BinaryFormatter formatter = new BinaryFormatter();

T t = formatter.Deserialize(ms) as T;

return t;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: