网站地图是怎么做的,茶山东莞网站建设,电商推广方法有哪些,昭通网站制作C#对于XML的序列化与反序列化提供了很好的支持#xff0c;我们只需要引用System.Xml的命名空间即可#xff0c;无需使用第三方库#xff0c;下面简单实现了一个XML的序列化与反序列化的帮助类。 1.序列化#xff1a; 先声明一个变量var settings new XmlWriterSettings我们只需要引用System.Xml的命名空间即可无需使用第三方库下面简单实现了一个XML的序列化与反序列化的帮助类。 1.序列化 先声明一个变量var settings new XmlWriterSettings分别设置两个属性Encoding new UTF8Encoding(false)和 Indent true。第一个从字面意思即可知道是设置要使用的文本编码的类型但为什么这里没有使用默认的Encoding.UTF8呢这是因为如果用Encoding.UTF8将在输出文本的最前面添加4个字节的非xml内容。Indent属性表示是否缩进元素。第二点需要注意的是XmlSerializerNamespaces这里var ns声明一个变量并添加空元素的意义在于强制指定命名空间覆盖默认的命名空间。 2.反序列化 反序列化相对来说就比较简单了IsNullOrEmpty的意义在于当传入的字符串是null或者空时函数就返回true否则返回false。可以参看源码的实现。 public static bool IsNullOrEmpty(string value){ return value null || value.Length 0; } 其它的就参看源码吧。 1 using System;2 using System.IO;3 using System.Text;4 using System.Xml;5 using System.Xml.Serialization;6 7 namespace XmlHelper8 {9 public static class XmlSerializeHelper
10 {
11 /// summary
12 /// XML序列化
13 /// /summary
14 /// typeparam nameT/typeparam
15 /// param nameobj/param
16 /// returns/returns
17 public static string XmlSerializerT(T obj)
18 {
19 var settings new XmlWriterSettings
20 {
21 Encoding new UTF8Encoding(false),
22 Indent true
23 };
24
25 using (var ms new MemoryStream())
26 {
27 using (var xw XmlWriter.Create(ms, settings))
28 {
29 var ns new XmlSerializerNamespaces();
30 ns.Add(, );
31 var serializer new XmlSerializer(obj.GetType());
32 serializer.Serialize(xw, obj, ns);
33 return Encoding.UTF8.GetString(ms.ToArray());
34 }
35 }
36 }
37
38 /// summary
39 /// XML反序列化
40 /// /summary
41 /// typeparam nameT/typeparam
42 /// param nameXmlString/param
43 /// returns/returns
44 public static T XmlDeserializeT(this string XmlString)
45 {
46 if (string.IsNullOrEmpty(XmlString))
47 throw new ArgumentNullException(s);
48
49 using (var ms new MemoryStream(Encoding.UTF8.GetBytes(XmlString)))
50 {
51 using (var xr XmlReader.Create(ms))
52 {
53 var xmlSerializer new XmlSerializer(typeof(T));
54 return (T)xmlSerializer.Deserialize(xr);
55 }
56 }
57 }
58
59 /// summary
60 /// XML保存到本地
61 /// /summary
62 /// param namestrXml/param
63 /// returns/returns
64 public static void SavaToFile(string strXml)
65 {
66 string filepath d:\\Log\\;
67 if (!Directory.Exists(filepath))
68 Directory.CreateDirectory(filepath);
69
70 string fileName DateTime.Now.ToString(yyyy-MM-dd-HH-mm-ss) .xml;
71 using (FileStream fs new FileStream(filepath fileName, FileMode.Create))
72 {
73 byte[] xmlBytes Encoding.UTF8.GetBytes(strXml);
74 fs.Write(xmlBytes, 0, xmlBytes.Length);
75 }
76 }
77 }
78 } 转载于:https://www.cnblogs.com/sunwenqi/p/11044009.html