当前位置: 首页 > news >正文

XML序列化与反序列化工具类

 /// <summary>/// XML序列化与反序列化工具类/// </summary>public static class XmlSerializerHelper{/// <summary>/// 将对象序列化为XML字符串/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="obj">要序列化的对象</param>/// <param name="xmlRootName">自定义XML根节点名称(可选)</param>/// <returns>序列化后的XML字符串</returns>public static string SerializeToXml<T>(T obj, string xmlRootName = null){if (obj == null){throw new ArgumentNullException(nameof(obj), "序列化对象不能为null");}try{using (StringWriter sw = new StringWriter()){XmlSerializer serializer = CreateXmlSerializer(typeof(T), xmlRootName);serializer.Serialize(sw, obj);return sw.ToString();}}catch (Exception ex){throw new InvalidOperationException("对象序列化为XML字符串失败", ex);}}/// <summary>/// 将XML字符串反序列化为对象/// </summary>/// <typeparam name="T">目标对象类型</typeparam>/// <param name="xml">XML字符串</param>/// <param name="xmlRootName">自定义XML根节点名称(可选)</param>/// <returns>反序列化后的对象</returns>public static T DeserializeFromXml<T>(string xml, string xmlRootName = null){if (string.IsNullOrWhiteSpace(xml)){throw new ArgumentNullException(nameof(xml), "XML字符串不能为空");}try{using (StringReader sr = new StringReader(xml)){XmlSerializer serializer = CreateXmlSerializer(typeof(T), xmlRootName);return (T)serializer.Deserialize(sr);}}catch (Exception ex){throw new InvalidOperationException("XML字符串反序列化为对象失败", ex);}}/// <summary>/// 将对象序列化到XML文件/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="obj">要序列化的对象</param>/// <param name="filePath">XML文件完整路径</param>/// <param name="xmlRootName">自定义XML根节点名称(可选)</param>public static void SerializeToFile<T>(T obj, string filePath, string xmlRootName = null){if (obj == null){throw new ArgumentNullException(nameof(obj), "序列化对象不能为null");}if (string.IsNullOrWhiteSpace(filePath)){throw new ArgumentNullException(nameof(filePath), "文件路径不能为空");}// 确保目录存在string directory = Path.GetDirectoryName(filePath);if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)){Directory.CreateDirectory(directory);}try{using (StreamWriter writer = new StreamWriter(filePath)){XmlSerializer serializer = CreateXmlSerializer(typeof(T), xmlRootName);serializer.Serialize(writer, obj);}}catch (Exception ex){throw new InvalidOperationException($"序列化对象到文件失败: {filePath}", ex);}}/// <summary>/// 从XML文件反序列化为对象/// </summary>/// <typeparam name="T">目标对象类型</typeparam>/// <param name="filePath">XML文件完整路径</param>/// <param name="xmlRootName">自定义XML根节点名称(可选)</param>/// <returns>反序列化后的对象</returns>public static T DeserializeFromFile<T>(string filePath, string xmlRootName = null){if (string.IsNullOrWhiteSpace(filePath)){throw new ArgumentNullException(nameof(filePath), "文件路径不能为空");}if (!File.Exists(filePath)){throw new FileNotFoundException($"XML文件不存在: {filePath}");}try{using (StreamReader reader = new StreamReader(filePath)){XmlSerializer serializer = CreateXmlSerializer(typeof(T), xmlRootName);return (T)serializer.Deserialize(reader);}}catch (Exception ex){throw new InvalidOperationException($"从文件反序列化对象失败: {filePath}", ex);}}/// <summary>/// 创建XmlSerializer实例,支持自定义根节点名称/// </summary>private static XmlSerializer CreateXmlSerializer(Type type, string xmlRootName){if (string.IsNullOrWhiteSpace(xmlRootName)){return new XmlSerializer(type);}else{return new XmlSerializer(type, new XmlRootAttribute(xmlRootName));}}}

 

http://www.jsqmd.com/news/50322/

相关文章:

  • 2025年靠谱的无尘车间FFU龙骨实力厂家TOP推荐榜
  • 2025年11月企业管理咨询公司权威榜单:战略转型与人力资源TOP10机构深度测评
  • 2025年知名的轻集料混凝土LC5.0型厂家最新用户好评榜
  • 2025年评价高的绞龙输送机厂家推荐及选购参考榜
  • 2025年评价高的农业沙盘模型模型最新TOP厂家排名
  • 2025年靠谱的双功能阻尼托底轨优质厂家推荐榜单
  • 2025年评价高的饰品铆钉机优质厂家推荐榜单
  • 9-SpringCloud-服务网关 Gateway-高级特性之 Filter-1 - 指南
  • 2025年比较好的304潜水搅拌机直销制造
  • 2025年评价高的连体雨衣行业内口碑厂家排行榜
  • 2025年口碑好的工程类厨房水槽TOP品牌厂家排行榜
  • Could not resolve host: mirrorlist.centos.org; Unknown error【解决】
  • 2025年质量好的锂电池负极材料多孔碳分子筛实力源头
  • 2025年靠谱的双行星式搅拌机品牌厂家排行榜
  • 2025年知名的高端工装定制最新TOP厂家排名
  • 2025年知名的复合非隔热型防火玻璃品牌厂家排行榜
  • 2025年比较好的免浆虾仁厂家最新用户好评榜
  • 2025年热门的白刚玉耐火材料最新TOP厂家排名
  • 2025年知名的薄膜连栋玻璃温室高评价厂家推荐榜
  • 2025年热门的家具液压铰链厂家最新权威实力榜
  • 2025年质量好的生长灯最新TOP品牌厂家排行
  • 2025年热门的PET热流道清洗料热门厂家推荐榜单
  • 2025年评价高的高端液压浴室夹TOP实力厂家推荐榜
  • 2025年热门的抽条韩国绒厂家最新推荐排行榜
  • 2025年质量好的反弹缓冲隐藏轨用户好评厂家排行
  • 2025年比较好的圆盘耙片犁片热门厂家推荐榜单
  • 基于 PyQt6 与 Conda 的 PyInstaller 打包设备创建指南
  • 2025年口碑好的ENF级除醛生态板厂家推荐及采购参考
  • 2025年比较好的电视柜缓冲铰链厂家最新热销排行
  • 2025年质量好的萤火虫激光灯厂家实力及用户口碑排行榜