当前位置:编程学习 > C#/ASP.NET >>

用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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,