类库 System.Xml.Serialization
序列化
/// <summary>
/// 序列化
/// </summary>
/// <param name="type">类型</param>
/// <param name="obj">对象</param>
/// <returns></returns>
public static string Serializer<T>(T obj)
{
string str = string.Empty;
try
{
using (MemoryStream ms = new MemoryStream())
{
using (XmlTextWriter textWriter = new XmlTextWriter(ms, new UTF8Encoding()))
{
XmlSerializer xml = new XmlSerializer(typeof(T));
// 去掉结点的 xmlns:xsi="" 属性
var namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
//序列化对象
xml.Serialize(textWriter, obj, namespaces);
str = Encoding.UTF8.GetString(ms.GetBuffer()).Trim();
}
}
return str;
}
catch (Exception ex)
{
return str;
}
}
反序列化
/// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xmlString"></param>
/// <returns></returns>
public static T Deserialize<T>(string xmlString)
{
try
{
using (StringReader st = new StringReader(xmlString))
{
var xmlSer = new XmlSerializer(typeof(T));
return (T)xmlSer.Deserialize(st);
}
}
catch (Exception ex)
{
return default(T);
}
}
PS:更多参考
- C# 序列类为 xml 可以使用的特性大全
参考:【林德熙】 – https://blog.csdn.net/lindexi_gd/article/details/83176105 - C#读写xml文件的常用方式
参考:【littlejoean】 – https://www.cnblogs.com/joean/p/4985348.html