对象的xml序列化和反序列化

对象的xml序列化和反序列化

ID:9026678

大小:35.38 KB

页数:9页

时间:2018-04-15

对象的xml序列化和反序列化_第1页
对象的xml序列化和反序列化_第2页
对象的xml序列化和反序列化_第3页
对象的xml序列化和反序列化_第4页
对象的xml序列化和反序列化_第5页
资源描述:

《对象的xml序列化和反序列化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、NET对象的XML序列化和反序列化  序列化的概念  序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了。  比如,一个计数器,数值为2,我们可以用字符串“2”表示。  如果有个对象,叫做connter,当前值为2,那么可以序列化成“2”,反向的,也可以从“2”得到值为2的计数器实例。  这样,关机时序列化它,开机时反序列化它,每次开机都是延续的。不会都是从头开始。  序列化概念的提出和实现,可以使我们的应用程序的设置信息保存和读取更加方便。  序列化有很多好处,比如,在一台机器上产生一个实例,初始化完毕,然后可以序列化,通

2、过网络传送到另一台机器,然后反序列化,得到对象实例,之后再执行某些业务逻辑,得到结果,再序列化,返回第一台机器,第一台机器得到对象实例,得到结果。  这个例子是目前比较先进的“智能代理”的原理。  当前比较热火的webservices使用soap协议,soap协议也是以对象的可序列化为基础的。  一概述  .NETFramework为处理XML数据提供了许多不同的类库。XmlDocument类能让你像处理文件一样处理xml数据,而XmlReader、XmlWriter和它们的派生类使你能够将xml数据作为数据流处理。  XmlSerializer则提供了另外的方法,它使你能够将自己

3、的对象串行化和反串行化为xml。串行化数据既能够让你像处理文件一样对数据进行随机处理,同时又能跳过你不感兴趣的数据。  二主要类库介绍  .NET支持对象xml序列化和反序列化的类库主要位于命名空间System.Xml.Serialization中。  1.XmlSerializer类  该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性。  2.XmlAttri

4、buteAttribute类  指定类的公共域或读/写属性对应xml文件的Attribute。  例:[XmlAttribute(“type”)]or[XmlAttribute(AttributeName=”type”)]  3.XmlElementAttribute类  指定类的公共域或读/写属性对应xml文件的Element。  例:[XmlElement(“Maufacturer”)]or[XmlElement(ElementName=”Manufacturer”)]  4.XmlRootAttribute类  Xml序列化时,由该特性指定的元素将被序列化成xml的根元素。 

5、 例:[XmlRoot(“RootElement”)]or[XmlRoot(ElementName=“RootElements”)]  5.XmlTextAttribute类  Xml序列化时,由该特性指定的元素值将被序列化成xml元素的值。一个类只允许拥有一个该特性类的实例,因为xml元素只能有一个值。  6.XmlIgnoreAttribute类  Xml序列化时不会序列化该特性指定的元素。  三实例  下面例子中的xmlschema描述了一个简单的人力资源信息,其中包含了xml的大部分格式,如xml元素相互嵌套,xml元素既有元素值,又有属性值。  1.待序列化的类层次结构 

6、 [XmlRoot("humanResource")]  publicclassHumanResource  {  #regionprivatedata.  privateintm_record=0;  privateWorker[]m_workers=null;  #endregion  [XmlAttribute(AttributeName="record")]  publicintRecord  {  get{returnm_record;}  set{m_record=value;}  }  [XmlElement(ElementName="worker")]  publi

7、cWorker[]Workers  {  get{returnm_workers;}  set{m_workers=value;}  }  }  publicclassWorker  {  #regionprivatedata.  privatestringm_number=null;  privateInformationItem[]m_infoItems=null;  #endregion  [XmlAttribute("number")]  publicstri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。