用C#怎么写一个自定义的序列化和反序列化的类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C#怎么写一个自定义的序列化和反序列化的类相关的知识,希望对你有一定的参考价值。
有个类定义为:C#复制代码
1. [Serializable]//指明该类可以被序列化
2. public class webinfo
3.
4. public string userName;
5. public string webName;
6. public string webUrl;
7.
那么通过序列化我们可以将其序列化为:
XML/html复制代码
1. <?xml version="1.0"?>
2. <webinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3. <userName>阿会楠</userName>
4. <webName>搜索吧</webName>
5. <webUrl>http://www.sosuo8.com</webUrl>
6. </webinfo>
主要的代码如下:
C#复制代码
1. webinfo info = new webinfo();
2. info.userName = "阿会楠";
3. info.webName = "搜索吧";
4. info.webUrl = "http://www.sosuo8.com";
5.
6. //用webinfo这个类造一个XmlSerializer
7. XmlSerializer ser = new XmlSerializer(typeof(webinfo));
8.
9. //xml保存路径,序列化成功后可以通过查看该文件看到序列化后结果
10. string path = Server.MapPath("webinfo.xml");
11.
12. try
13.
14. //Stream用于提供字节序列的一般视图,这里将在根目录下建立一个xml文件
15. Stream file = new FileStream(path, FileMode.Create, FileAccess.Write);
16.
17. //把Stream对象和info一起传入,序列化出一个XML文件,如果没这一步,建立的xml内容为空
18. ser.Serialize(file, info);
19.
20. //释放资源
21. file.Close();
22. file.Dispose();
23.
24. Response.Write("序列化成功");
25.
26.
27. catch (Exception ex)
28.
29. Response.Write(ex.Message);
30.
31. finally
32.
33.
34.
反序列化就是读取xml文件并将其值自动匹配给类中的公有属性或方法或字段,也就是上面的逆操作。
C#复制代码
1. webinfo info = new webinfo();
2.
3. //用webinfo这个类造一个XmlSerializer
4. XmlSerializer ser = new XmlSerializer(typeof(webinfo));
5.
6. string path = Server.MapPath("webinfo.xml");
7.
8. //Stream用于提供字节序列的一般视图,这里将打开一个xml文件
9. Stream file = new FileStream(path, FileMode.Open, FileAccess.Read);
10.
11. //把字节序列(stream)反序列化
12. info = (webinfo)ser.Deserialize(file);
13.
14. Response.Write("站长:" + info.userName + "<br>");
15. Response.Write("站名:" + info.webName + "<br>");
16. Response.Write("域名:" + info.webUrl); 参考技术A 我不会写的啊
以上是关于用C#怎么写一个自定义的序列化和反序列化的类的主要内容,如果未能解决你的问题,请参考以下文章
C#中通过XmlSerializer类反序列化多个同名XML元素