这篇文章主要介绍了C# 中对象序列化XML的方法,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
今天我们来看一下在C#中对象序列化XML的方法。
不得不说,在这个Json横行的年代,XML虽然式微,但也的确是一股子清流。(个人感觉)
不多说,直接开始。
首先先说怎么用
需要用到的是这两个命名空间(主要)
using System.Xml;
using System.Xml.Serialization;
然后序列化和反序列化的方式和Json一样。(后面提供封装方法)
string result = XmlSerializeHelper.Serialize<test>(new test
{
name = "Seven",
cardId = "663927",
age = 15,
currentTime = DateTime.Now
});
Console.WriteLine(result);
test test2 = XmlSerializeHelper.DeSerialize<test>(result);

下面来看封装类
public class XmlSerializeHelper
{
//对象转XML
public static string ObjToXml(object obj)
{
using (MemoryStream Stream = new MemoryStream())
{
XmlSerializer xml = new XmlSerializer(obj.GetType());
xml.Serialize(Stream, obj);
Stream.Position = 0;
StreamReader sr = new StreamReader(Stream);
return sr.ReadToEnd();
}
}
public static string Serialize<T>(T obj)
{
return Serialize<T>(obj, Encoding.UTF8);
}
/// <summary>
/// 实体对象序列化成xml字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string Serialize<T>(T obj, Encoding encoding)
{
try
{
if (obj == null)
{
throw new ArgumentNullException("obj");
}
var ser = new XmlSerializer(obj.GetType());
using (var ms = new MemoryStream())
{
using (var writer = new XmlTextWriter(ms, encoding))
{
writer.Formatting = Formatting.Indented;
ser.Serialize(writer, obj);
}
var xml = encoding.GetString(ms.ToArray());
xml = xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
xml = xml.Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", "");
xml = Regex.Replace(xml, @"\s{2}", "");
xml = Regex.Replace(xml, @"\s{1}/>", "/>");
return xml;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 反序列化xml字符为对象,默认为Utf-8编码
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <returns></returns>
public static T DeSerialize<T>(string xml) where T : new()
{
return DeSerialize<T>(xml, Encoding.UTF8);
}
/// <summary>
/// 反序列化xml字符为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static T DeSerialize<T>(string xml, Encoding encoding) where T : new()
{
try
{
var mySerializer = new XmlSerializer(typeof(T));
using (var ms = new MemoryStream(encoding.GetBytes(xml)))
{
using (var sr = new StreamReader(ms, encoding))
{
return (T)mySerializer.Deserialize(sr);
}
}
}
catch (Exception e)
{
return default(T);
}
}
}
Class Of XmlSerializeHelper
好了,板砖要紧,先到这里。
以上就是C# 中对象序列化XML的方法的详细内容,更多关于c# 对象序列化XML的资料请关注得得之家其它相关文章!
沃梦达教程
本文标题为:C# 中对象序列化XML的方法
基础教程推荐
猜你喜欢
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
