.NET中XML序列化和反序列化常用类和属性是什么
.NET中XML序列化和反序列化常用类和属性是什么
这篇“.NET中XML序列化和反序列化常用类和属性是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“.NET中XML序列化和反序列化常用类和属性是什么”文章吧。
序列化和反序列化是指什么?
序列化(seriallization): 将对象转化为便于传输的数据格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。
反序列化(deseriallization):将序列化的数据恢复为对象的过程。
XmlSerializer类
该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性(在对象和 XML 文档之间进行序列化和反序列化操作)。
.NET-XML序列化和反序列化简单示例代码
usingSystem.IO;usingSystem.Xml.Serialization;namespacePractices.Common{publicclassSimpleSerializer{///<summary>///Model实体对象序列化为XML字符串///</summary>///<typeparamname="T">对象类型</typeparam>///<paramname="t">Model实体对象</param>///<returns></returns>publicstaticstringSerializeXMLL<T>(Tt){using(StringWritersw=newStringWriter()){XmlSerializerxmlSerializer=newXmlSerializer(t.GetType());xmlSerializer.Serialize(sw,t);returnsw.ToString();}}///<summary>///XML反序列化为对象///</summary>///<typeparamname="T">对象类型</typeparam>///<paramname="xml">xml字符串</param>///<returns></returns>publicstaticTDeserialize<T>(stringxml){XmlSerializerxmlSerializer=newXmlSerializer(typeof(T));StringReaderstringReader=newStringReader(xml);return(T)xmlSerializer.Deserialize(stringReader);}}}
XmlTypeAttribute类
该类主要控制当属性目标由XML序列化时生成的XML节点。
应用示例
///<summary>///Envelope///</summary>[XmlType(TypeName="envelope")]publicclassCityRes{publicHeaderheader{get;set;}publicResponseresponse{get;set;}}
XmlElementAttribute类
该类用于指示公共字段或属性在XML序列化或反序列化包含它们的对象时表示XML元素。
应用示例
///<summary>///Envelope///</summary>publicclassCityRes{///<summary>///header///</summary>[XmlElement("header")]publicHeaderheader{get;set;}///<summary>///response///</summary>[XmlElement("response")]publicResponseresponse{get;set;}}
XmlAttributeAttribute类
该类指定XML序列化必须将类成员序列化为XML属性。
应用示例
///<summary>///Version///</summary>publicclassVersion{///<summary>///port///</summary>[XmlAttribute("port")]publicstringport{get;set;}///<summary>///host///</summary>[XmlAttribute("host")]publicstringhost{get;set;}///<summary>///text///</summary>[XmlAttribute("text")]publicstringtext{get;set;}}
XmlArrayAttribute类
该类主要用于XML元素数组的应用(相当于就是集合的声明)。
应用示例
[XmlArray]publicItem[]Items{get{returnitems;}set{items=value;}}
XmlTextAttribute类
当Xml文档序列化或反序列化时使用该特性修饰的成员会作为XML文本处理。
应用示例
[System.Xml.Serialization.XmlTextAttribute()]publicstring[]Text{get{returnthis.textField;}set{this.textField=value;}}
XmlIgnoreAttribute类
指示该特性修饰的对象在Xml序列化时不会序列化该特性指定的元素。
应用示例
publicclassTeamGroup{[XmlIgnore]publicstringComment;publicstringGroupName;}
用来控制XML序列化的属性汇总
通过将下表中的特性应用于类和类成员,可以控制XmlSerializer序列化或反序列化该类的实例的方式。 若要了解这些属性如何控制 XML 序列化,请参阅使用属性控制 XML 序列化。
特性 | 适用对象 | 指定 |
---|---|---|
XmlAnyAttributeAttribute | 公共字段、属性、参数或返回XmlAttribute对象数组的返回值。 | 反序列化时,将会使用XmlAttribute对象填充数组,而这些对象代表对于架构未知的所有 XML 特性。 |
XmlAnyElementAttribute | 公共字段、属性、参数或返回XmlElement对象数组的返回值。 | 反序列化时,将会使用XmlElement对象填充数组,而这些对象代表对于架构未知的所有 XML 元素。 |
XmlArrayAttribute | 公共字段、属性、参数或返回复杂对象的数组的返回值。 | 数组成员将作为 XML 数组的成员生成。 |
XmlArrayItemAttribute | 公共字段、属性、参数或返回复杂对象的数组的返回值。 | 可以插入数组的派生类型。 通常与XmlArrayAttribute一起应用。 |
XmlAttributeAttribute | 公共字段、属性、参数或返回值。 | 成员将作为 XML 属性进行序列化。 |
XmlChoiceIdentifierAttribute | 公共字段、属性、参数或返回值。 | 可以使用枚举进一步消除成员的歧义。 |
XmlElementAttribute | 公共字段、属性、参数或返回值。 | 字段或属性将作为 XML 元素进行序列化。 |
XmlEnumAttribute | 作为枚举标识符的公共字段。 | 枚举成员的元素名称。 |
XmlIgnoreAttribute | 公共属性和公共字段。 | 序列化包含类时,应该忽略属性或字段。 |
XmlIncludeAttribute | 公共派生类声明,以及 Web 服务描述语言 (WSDL) 文档的公共方法的返回值。 | 生成要在序列化时识别的架构时,应该将该类包括在内。 |
XmlRootAttribute | 公共类声明。 | 控制视为 XML 根元素的属性目标的 XML 序列化。 使用该属性可进一步指定命名空间和元素名称。 |
XmlTextAttribute | 公共属性和公共字段。 | 属性或字段应该作为 XML 文本进行序列化。 |
XmlTypeAttribute | 公共类声明。 | XML 类型的名称和命名空间。 |
以上就是关于“.NET中XML序列化和反序列化常用类和属性是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注恰卡编程网行业资讯频道。
推荐阅读
-
「原创」PHP实战-XML详细教程
-
在PHP中使用SPL库中的对象方法进行XML与数组的转换
虽说现在很多的服务提供商都会提供JSON接口供我们使用,但是,还是有不少的服务依然必须使用XML作为接口格式,这就需...
-
深入学习PHP中的JSON相关函数
在我们当年刚刚上班的那个年代,还全是XML的天下,但现在JSON数据格式已经是各种应用传输的事实标准了。最近几年开始学习...
-
wps打开word文件出现无法打开因为内容有问题的解决办法
-
php将xml转化对象的实例详解
XML文件$xml="123456";将文件转换成对象$objectxml=simplexml_load_...
-
Android中如何自定义xml属性
Android中如何自定义xml属性这篇“Android中如何自定...
-
C#中XML文件内容增删改查的方法
C#中XML文件内容增删改查的方法本篇内容介绍了“C#中XML文件...
-
Python如何实现xml格式转txt格式
-
AJAX怎么使用XML文件进行交互式通信
AJAX怎么使用XML文件进行交互式通信本文小编为大家详细介绍“A...
-
HTML和XML的区别是什么