您的位置:首页 > 编程语言 > C#

一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】

2016-12-15 10:45 537 查看
原文:http://blog.csdn.net/otong/article/details/7894059

序列化或反序列化成一个字符串:

方法一:

序列化:

[csharp] view plain copy

public static string XMLSerialize<T>(T entity)

{

StringBuilder buffer = new StringBuilder();

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

using (TextWriter writer = new StringWriter(buffer))

{

serializer.Serialize(writer, entity);

}

return buffer.ToString();

}

反序列化:

[csharp] view plain copy

public static T DeXMLSerialize<T>(string xmlString)

{

T cloneObject = default(T);

StringBuilder buffer = new StringBuilder();

buffer.Append(xmlString);

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

using (TextReader reader = new StringReader(buffer.ToString()))

{

Object obj = serializer.Deserialize(reader);

cloneObject = (T)obj;

}

return cloneObject;

}

方法二:

[csharp] view plain copy

/// <summary>

/// 对象序列化成 XML String

/// </summary>

public static string XmlSerialize<T>(T obj)

{

string xmlString = string.Empty;

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

using (MemoryStream ms = new MemoryStream())

{

xmlSerializer.Serialize(ms, obj);

xmlString = Encoding.UTF8.GetString(ms.ToArray());

}

return xmlString;

}

/// <summary>

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

/// </summary>

public static T XmlDeserialize<T>(string xmlString)

{

T t = default(T);

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

using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))

{

using (XmlReader xmlReader = XmlReader.Create(xmlStream))

{

Object obj = xmlSerializer.Deserialize(xmlReader);

t = (T)obj;

}

}

return t;

}

如果要序列化到一个文件,则使用FileStream就可以了

如:

string strFile = @"c:/book.xml";

using (FileStream fs = new FileStream(strFile, FileMode.Create))

{

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

formatter.Serialize(fs, entity);

}

附:其实还可以直接用SringWriter

StringBuilder sb = new StringBuilder();

System.IO.StringWriter writer = new System.IO.StringWriter(sb);

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

formatter .Serialize(writer,entity );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐