博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xml序列化、反序列化帮助类
阅读量:5889 次
发布时间:2019-06-19

本文共 4099 字,大约阅读时间需要 13 分钟。

之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用

1 ///   2     /// 功能:Xml序列化、反序列化帮助类  3     /// 说明:  4     /// 创建人:  5     /// 创建时间:2014年3月13日  6     ///   7     public static class XmlHelper  8     {  9         ///  10         /// 私有方法,不被外部方法访问 11         /// 序列化对象 12         ///  13         /// 流 14         /// 对象 15         /// 编码方式 16         private static void XmlSerializeInternal(Stream stream, object o, Encoding encoding) 17         { 18             if (o == null) 19                 throw new ArgumentNullException("o"); 20             if (encoding == null) 21                 throw new ArgumentNullException("encoding"); 22  23             XmlSerializer serializer = new XmlSerializer(o.GetType()); 24  25             XmlWriterSettings settings = new XmlWriterSettings(); 26             settings.Indent = true; 27             settings.NewLineChars = "\r\n"; 28             settings.Encoding = encoding; 29             settings.IndentChars = "    "; 30  31             using (XmlWriter writer = XmlWriter.Create(stream, settings)) 32             { 33                 serializer.Serialize(writer, o); 34                 writer.Close(); 35             } 36         } 37  38         ///  39         /// 序列化,将一个对象序列化为XML字符串 40         ///  41         /// 要序列化的对象 42         /// 编码方式 43         /// 
序列化产生的XML字符串
44 public static string XmlSerialize(object o, Encoding encoding) 45 { 46 using (MemoryStream stream = new MemoryStream()) 47 { 48 XmlSerializeInternal(stream, o, encoding); 49 50 stream.Position = 0; 51 using (StreamReader reader = new StreamReader(stream, encoding)) 52 { 53 return reader.ReadToEnd(); 54 } 55 } 56 } 57 58 /// 59 /// 序列化,将一个对象按XML序列化的方式写入到一个文件 60 /// 61 /// 要序列化的对象 62 /// 保存文件路径 63 /// 编码方式 64 public static void XmlSerializeToFile(object o, string path, Encoding encoding) 65 { 66 if (string.IsNullOrEmpty(path)) 67 throw new ArgumentNullException("path"); 68 69 using (FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write)) 70 { 71 XmlSerializeInternal(file, o, encoding); 72 } 73 } 74 75 /// 76 /// 反序列化,从XML字符串中反序列化对象 77 /// 78 ///
结果对象类型
79 /// 包含对象的XML字符串 80 /// 编码方式 81 ///
反序列化得到的对象
82 public static T XmlDeserialize
(string s, Encoding encoding) 83 { 84 if (string.IsNullOrEmpty(s)) 85 throw new ArgumentNullException("s"); 86 if (encoding == null) 87 throw new ArgumentNullException("encoding"); 88 89 XmlSerializer mySerializer = new XmlSerializer(typeof(T)); 90 using (MemoryStream ms = new MemoryStream(encoding.GetBytes(s))) 91 { 92 using (StreamReader sr = new StreamReader(ms, encoding)) 93 { 94 return (T)mySerializer.Deserialize(sr); 95 } 96 } 97 } 98 99 ///
100 /// 反序列化,读入一个文件,并按XML的方式反序列化对象。101 /// 102 ///
结果对象类型
103 ///
文件路径104 ///
编码方式105 ///
反序列化得到的对象
106 public static T XmlDeserializeFromFile
(string path, Encoding encoding)107 {108 if (string.IsNullOrEmpty(path))109 throw new ArgumentNullException("path");110 if (encoding == null)111 throw new ArgumentNullException("encoding");112 113 string xml = File.ReadAllText(path, encoding);114 return XmlDeserialize
(xml, encoding);115 }116 }
View Code

 

转载于:https://www.cnblogs.com/OnlyVersion/p/4503742.html

你可能感兴趣的文章
17.5. pid
查看>>
英国脱欧不过是小事一桩
查看>>
oracle 11.2.0.4 ogg 12.3.0.1.0备库rep进程启动报错OGG-00446
查看>>
如何提高用户对于网站的忠诚度?网站托管公司告诉你!
查看>>
Oracle 自动故障诊断
查看>>
HTML的select控件美化
查看>>
Windows 8.1下 MySQL绿色版安装配置与使用
查看>>
Xamarin生成的APK大小分析
查看>>
T-SQL技术收集——删除重复数据
查看>>
nginx访问控制
查看>>
【百度地图API】让用户选择起点和终点的驾车导航
查看>>
WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]
查看>>
第1章 开发环境安装和配置(一):概述
查看>>
mybatis mapper namespace
查看>>
ASP.NET Web API 2 对 CORS 的支持
查看>>
编译安装lamp
查看>>
几个学习流媒体的案例代码网址
查看>>
Linux学习 -->解决Ubuntu系统上 No command 'crond' found
查看>>
娱乐开发两不误,10大开源游戏框架推荐
查看>>
ZooKeeper 笔记(3) 实战应用之【统一配置管理】
查看>>