亲测可用:
先上代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Space.XML
{
public class XmlHelper
{
/// <summary>
/// XML序列化某一类型到指定的文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="obj"></param>
/// <param name="type"></param>
public static void SerializeToXml<T>(string filePath, T obj)
{
try
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
xs.Serialize(writer, obj);
}
}
catch (Exception ex)
{
throw;
}
}
/// <summary>
/// 从某一XML文件反序列化到某一类型
/// </summary>
/// <param name="filePath">待反序列化的XML文件名称</param>
/// <param name="type">反序列化出的</param>
/// <returns></returns>
public static T DeserializeFromXml<T>(string filePath)
{
try
{
//判断文件路径是否存在
if (!System.IO.File.Exists(filePath))
throw new ArgumentNullException(filePath + "不存在!");
using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
T ret = (T)xs.Deserialize(reader);
return ret;
}
}
catch (Exception ex)
{
return default(T);
}
}
}
}
其实这个代码在好多网站上可以百度到,我只是整合到一块直接可以用。
//保存至XML
XmlHelper.SerializeToXml(savePath, pipePointTags);
这个事保存,pipePointTags为以对象,savePath为保存的路径。
序列化后的xml:
//获取xml配置文件
List<PipeTagMode> pipeTagModes= XmlHelper.DeserializeFromXml<List<PipeTagMode>>(xmlPath);
这个是反序列化Xml,将xml序列化为指定对象。
函数中的T为范类型,支持所有对象的序列化和反序列化