- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NET对象的XML序列化和反序列化 序列化的概念 序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了。 比如,一个计数器,数值为2,我们可以用字符串“2”表示。 如果有个对象,叫做connter,当前值为2,那么可以序列化成“2”,反向的,也可以从“2”得到值为2的计数器实例。 这样,关机时序列化它,开机时反序列化它,每次开机都是延续的。不会都是从头开始。 序列化概念的提出和实现,可以使我们的应用程序的设置信息保存和读取更加方便。 序列化有很多好处,比如,在一台机器上产生一个实例,初始化完毕,然后可以序列化,通过网络传送到另一台机器,然后反序列化,得到对象实例,之后再执行某些业务逻辑,得到结果,再序列化,返回第一台机器,第一台机器得到对象实例,得到结果。 这个例子是目前比较先进的“智能代理”的原理。 当前比较热火的web services使用soap协议,soap协议也是以对象的可序列化为基础的。 一概述 .NET Framework为处理XML数据提供了许多不同的类库。XmlDocument类能让你像处理文件一样处理xml数据,而XmlReader、XmlWriter和它们的派生类使你能够将xml数据作为数据流处理。 XmlSerializer则提供了另外的方法,它使你能够将自己的对象串行化和反串行化为xml。串行化数据既能够让你像处理文件一样对数据进行随机处理,同时又能跳过你不感兴趣的数据。 二主要类库介绍 .NET 支持对象xml序列化和反序列化的类库主要位于命名空间System.Xml.Serialization中。 1. XmlSerializer 类 该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性。 2. XmlAttributeAttribute 类 指定类的公共域或读/写属性对应xml文件的Attribute。 例:[XmlAttribute(“type”)] or [XmlAttribute(AttributeName=”type”)] 3. XmlElementAttribute类 指定类的公共域或读/写属性对应xml文件的Element。 例:[XmlElement(“Maufacturer”)] or [XmlElement(ElementName=”Manufacturer”)] 4. XmlRootAttribute类 Xml序列化时,由该特性指定的元素将被序列化成xml的根元素。 例:[XmlRoot(“RootElement”)] or [XmlRoot(ElementName = “RootElements”)] 5. XmlTextAttribute 类 Xml序列化时,由该特性指定的元素值将被序列化成xml元素的值。一个类只允许拥有一个该特性类的实例,因为xml元素只能有一个值。 6. XmlIgnoreAttribute类 Xml序列化时不会序列化该特性指定的元素。 三实例 下面例子中的xml schema 描述了一个简单的人力资源信息,其中包含了xml的大部分格式,如xml 元素相互嵌套, xml元素既有元素值,又有属性值。 1. 待序列化的类层次结构 [XmlRoot(humanResource)] public class HumanResource { #region private data. private int m_record = 0; private Worker[] m_workers = null; #endregion [XmlAttribute(AttributeName=record)] publicint Record { get { return m_record; } set { m_record = value; } } [XmlElement(ElementName=worker)] public Worker[] Workers { get { return m_workers; } set { m_workers = value; } } } public class Worker { #region private data. private string m_number = null; privateInformationItem[] m_inf
原创力文档


文档评论(0)