用C#怎么写一个自定义的序列化和反序列化的类

 我来答
就烦条0o
2016-07-25 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
有个类定义为:
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);
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
当失机和电底堡1j
2018-03-29 · 超过16用户采纳过TA的回答
知道答主
回答量:209
采纳率:33%
帮助的人:32.5万
展开全部
我不会写的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式