C#xml泛型序列化
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Web.Script.Serialization; using System.Xml; using System.Xml.Serialization; namespace Com.AppCode.Helper { /// <summary> /// 泛型序列化 /// </summary> public class XmlHelper { /// <summary> /// 对象序列化成 XML String /// </summary> public static string Serialize<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 Deserialize<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; } /// <summary> /// XML String 反序列化成对象 /// </summary> public static List<T> DeserializeToList<T>(string xml) { return new List<T>(); } /* Test var xml = @"<classes> <class> <classname>高三一班</classname> <id>1</id> <remark>学霸</remark> <students> <student> <name>爱因斯坦</name> <sex>男</sex> <age>18</age> </student> <student> <name>牛顿</name> <sex>男</sex> <age>18</age> </student> </students> </class> <class> <classname>高三Ⅹ班</classname> <id>1</id> <remark>渣渣</remark> <students> <student> <name>特朗普</name> <sex>男</sex> <age>18</age> </student> <student> <name>本</name> <sex>男</sex> <age>18</age> </student> </students> </class> </classes>"; List<ClassSet> list = XmlHelper.XmlToList<ClassSet>(xml, "classes"); [Serializable, XmlType("class")] public class ClassSet { [XmlElement("classname")] public string Name { get; set; } [XmlElement("id")] public int Id { get; set; } [XmlElement("remark")] public string Remark { get; set; } [XmlArray("students")] public List<Student> Students { get; set; } [Serializable, XmlType("student")] public class Student { [XmlElement("name")] public string Name { get; set; } [XmlElement("sex")] public string Sex { get; set; } [XmlElement("age")] public int Age { get; set; } } } */ public static List<T> XmlToList<T>(string xml, string rootName) where T : class { XmlSerializer serializer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(rootName)); using (StringReader sr = new StringReader(xml)) { List<T> list = serializer.Deserialize(sr) as List<T>; return list; } } } /// <summary> /// <remarks>Xml序列化与反序列化</remarks> /// <creator>zhangdapeng</creator> /// </summary> public class XmlSerializeUtil { #region 反序列化 /// <summary> /// 反序列化 /// </summary> /// <param name="type">类型</param> /// <param name="xml">XML字符串</param> /// <returns></returns> public static object Deserialize(Type type, string xml) { using (StringReader sr = new StringReader(xml)) { XmlSerializer xmldes = new XmlSerializer(type); return xmldes.Deserialize(sr); } } /// <summary> /// 反序列化 /// </summary> /// <param name="type"></param> /// <param name="xml"></param> /// <returns></returns> public static object Deserialize(Type type, Stream stream) { XmlSerializer xmldes = new XmlSerializer(type); return xmldes.Deserialize(stream); } #endregion #region 序列化 /// <summary> /// 序列化 /// </summary> /// <param name="type">类型</param> /// <param name="obj">对象</param> /// <returns></returns> public static string Serializer(Type type, object obj) { MemoryStream Stream = new MemoryStream(); XmlSerializer xml = new XmlSerializer(type); //序列化对象 xml.Serialize(Stream, obj); Stream.Position = 0; StreamReader sr = new StreamReader(Stream); string str = sr.ReadToEnd(); sr.Dispose(); Stream.Dispose(); return str; } #endregion } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!