c#XML序列化与反序列化.pdf

上传人:奔*** 文档编号:89816463 上传时间:2023-05-13 格式:PDF 页数:250 大小:6.80MB
返回 下载 相关 举报
c#XML序列化与反序列化.pdf_第1页
第1页 / 共250页
c#XML序列化与反序列化.pdf_第2页
第2页 / 共250页
点击查看更多>>
资源描述

《c#XML序列化与反序列化.pdf》由会员分享,可在线阅读,更多相关《c#XML序列化与反序列化.pdf(250页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、c#XML序列化与反序列化1乂 nJ/J lZ A A 4 r I J JLJJL11CUL)J L DJLJLJLiaLLJJL J不|,很不爽,只能改成了BinaryWriter和BinaryReader来读写,突然想到能不能用XML来序列化?于是在网上查了些资料便写了些实践性代码,做些记录,避免以后忘记。序列化对象public class PeopleXmlAttribute(nNAMEn)public string Name set;get;XmlAttribute(nAGEn)public int Age set;get;XmlRoot(nRootn)public class Stu

2、dent:PeopleXmlElement(nCLAS S)public string Class set;get;XmlElement(nNUMBERn)public int Number set;get;void Main(string args)Student stu 二 new Student()c oIIClass=Class One,Name=Tom,Number=1XmlSerializer ser=newXmlSerializer(typeof(Student);ser.Serialize(File.Create(nC:x.xml)stu);反序列化对象XmlSerialize

3、r ser 二 newXmlSerializer(typeof(Student);Student stu 二ser.Deserialize(File.OpenRead(nC:x.xmln)as Student;对象数组序列化public class PeopleXmlAttribute(nNAMEn)public string Name set;get;XmlAttribute(nAGEn)public int Age set;get;XmlRoot(nRootn)public class Student:PeopleXmlElement(nCLAS S)public string Class

4、 set;get;XmlElement(nNUMBERn)public int Number set;get;void Main(string args)List stuList 二new List();stuList.Add(new Student()Age=10,Number 二 1,Name 二”Tom Class Class Onen);stuList.Add(new Student()Age=11,Number 二 2,Name 二nJayn,Class=nClassTwon);stuList.Add(new Student()Age=12,Number 二 3,Name 二nPet

5、n,Class=nClass Onen);stuList.Add(new Student()Age=13,Number 二 4,Name 二May,Class=Class Three”);stuList.Add(new Student()Age=14,Number 二 5,Name 二nSoyn,Class=nClassTwon);XmlSerializer ser 二 newXmlSerializer(typeof(List);ser.Serialize(File.Create(HC:x.xml 工 stuList);对象数组反序列XmlSerializer ser 二 newXmlSeri

6、alizer(typeof(List);List stuList 二ser.Deserialize(File.OpenRead(nC:x.xmln)as List;fo9 ch (Student s in s tu L is t)MessageBox.Show(string.Format(n0:l:2:3s.Name,s.Age,s.Class,s.Number);序列化Dire tionarypublic struct DirectionListXmlAttribute(N ame)public string Name;XmlElement(n Value)public int Value;

7、void Main(string args)Dictionary list二 new Dictionary();list.Add(nr,100);list.AddC2 200);list.Add(n3n,300);list.Add(n4n,400);list.Add(n5n,500);list.AddC6 600);list.Add(n7n,700);list.Add(n8n,800);list.AddC9 900);List dirList二 new List();foreach(var s in list)dirList.Add(newDirectionList()Name 二 s.Key

8、,Value 二 s.Value);XmlSerializer ser 二 newXmlSerializer(typeof(List);ser.Serialize(File.Create(HC:x.xmldirList);I-L-/4 /Q I|1 7 I H,I。E 4 I)、7只能按照它的格式先创建一个可以别序列化的类型,这里我定义了一个结构体,当然你也可以定义成其他的类。将Dictionary。*中的数据依次放进结构体以后就可以放入流中了。XmlAttribute(nNamen)意思是将这个字段作为xml的房性,属性名 跟 在 中XmlElement(1*Valuen)意思是将这个字段做

9、为xml的元素。反序列 化DirctionaryXmlSerializer ser 二 newXmlSerializer(typeof(List);List dirList=ser.Deserialize(File.OpenRead(nC:x.xmln)asList;foreach(var v in dirList)Console.WriteLine(n0:1 v.Name,v.Value);是这样了,没有太炫的地方,Deserialize反序列化。真希望.Net能集成Dirctionaryo对象,那我们这些懒人就方便了。在需要序列化的队伍中,数组是很常见的类型,其次就是图片了序列化图片pub

10、lic struct ImageStructXmlAttribute(nN umber)public int number;XmlElement(!f Imag en)public byte picture;void Main(string args)ImageStruct()number=1,picture=File.ReadAllBytes(n 11.jpgn);XmlSerializer ser 二 newXmlSerializer(typeof(ImageStruct);FileStream fs=File.Create(nc:x.xmln);fs.CloseQ;一样的,采用结构体来保

11、存图片,这里我还加了个图片的名字,到时候查找起来也方便一些图片反序列化XmlSerializer ser 二 newXmlSerializer(typeof(ImageStruct);ImageStruct s=(ImageStruct)ser.Deserialize(File.OpenRead(nc:x.xmln);pictureBoxl.Image 二Image.FromStream(newMemory S tream(s.picture);I 4 I-7 7 I Q/7memorystream来做缓存,这样会比较快一点,实际上我并没有怎么感觉。图片数组序列化public struct I

12、mageStructXmlAttribute(nN umber)public int number;XmlElement(!f Imag en)public byte picture;void Main(string args)ListimageList=newLi s t();imageList.Add(newImageStruct()number=1,picture=File.Read AIIB y te s(11.jpg)cimageList.Add(newImageStruct()number=2,picture=File.ReadAUBytes(n22.jpgn)cXmlSerial

13、izer ser 二 newXmlSerializer(typeof(List);FileStream fs=File.Create(nc:x.xmln);ser.Serialize(fs,imageList);fs.CloseQ;图片数组反序列化XmlSerializer ser 二 newXmlSerializer(typeof(List);List s 二(List)ser.Deserialize(File.OpenRead(nc:x.xmln);var im=from i in swhere i.number=1select i.picture;/var im=s.Where(p=p.number=l).Select(p=p.picture);foreach(var image in im)pictureBoxi.Image 二Image.FromStream(newMemoryStream(image);这里还对数组结构进仃Linq查询,这样就可以很方便的查询图片了。要序列化的对象的类:Serializablepublic class Personprivate string name;public string Namereturn name;Iname=value;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁