用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);
--------------------编程问答-------------------- 貌似我跑题了,呵呵,见笑了。 --------------------编程问答-------------------- [Serializable] --------------------编程问答-------------------- up --------------------编程问答-------------------- y --------------------编程问答-------------------- [Serializable]//
补充:.NET技术 , C#