文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.NET中XML序列化和反序列化常用类和属性是什么

2023-06-29 19:34

关注

这篇“.NET中XML序列化和反序列化常用类和属性是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“.NET中XML序列化和反序列化常用类和属性是什么”文章吧。

序列化和反序列化是指什么?

序列化(seriallization): 将对象转化为便于传输的数据格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。
反序列化(deseriallization):将序列化的数据恢复为对象的过程。

XmlSerializer类

  该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性(在对象和 XML 文档之间进行序列化和反序列化操作)。

.NET-XML序列化和反序列化简单示例代码

using System.IO;using System.Xml.Serialization; namespace Practices.Common{    public class SimpleSerializer    {        /// <summary>        /// Model实体对象序列化为XML字符串        /// </summary>        /// <typeparam name="T">对象类型</typeparam>        /// <param name="t">Model实体对象</param>        /// <returns></returns>        public static string SerializeXMLL<T>(T t)        {            using (StringWriter sw = new StringWriter())            {                XmlSerializer xmlSerializer = new XmlSerializer(t.GetType());                xmlSerializer.Serialize(sw, t);                return sw.ToString();            }        }         /// <summary>        /// XML反序列化为对象        /// </summary>        /// <typeparam name="T">对象类型</typeparam>        /// <param name="xml">xml字符串</param>        /// <returns></returns>        public static T Deserialize<T>(string xml)        {            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));            StringReader stringReader = new StringReader(xml);            return (T)xmlSerializer.Deserialize(stringReader);        }     }}

XmlTypeAttribute类

   该类主要控制当属性目标由XML序列化时生成的XML节点。

应用示例

/// <summary>/// Envelope/// </summary>[XmlType(TypeName = "envelope")]public class CityRes{    public Header header { get; set; }     public Response response { get; set; } }

XmlElementAttribute类

   该类用于指示公共字段或属性在XML序列化或反序列化包含它们的对象时表示XML元素。

应用示例

/// <summary>/// Envelope/// </summary>public class CityRes{    /// <summary>    /// header    /// </summary>    [XmlElement("header")]    public Header header { get; set; }     /// <summary>    /// response    /// </summary>    [XmlElement("response")]    public Response response { get; set; } }

XmlAttributeAttribute类

  该类指定XML序列化必须将类成员序列化为XML属性。

应用示例

/// <summary>/// Version/// </summary>public class Version{    /// <summary>    /// port    /// </summary>    [XmlAttribute("port")]    public string port { get; set; }     /// <summary>    /// host    /// </summary>    [XmlAttribute("host")]    public string host { get; set; }     /// <summary>    /// text    /// </summary>    [XmlAttribute("text")]    public string text { get; set; } }

XmlArrayAttribute类

  该类主要用于XML元素数组的应用(相当于就是集合的声明)。

应用示例

[XmlArray]public Item []Items{   get{return items;}   set{items = value;}}

XmlTextAttribute类

  当Xml文档序列化或反序列化时使用该特性修饰的成员会作为XML文本处理。

应用示例

[System.Xml.Serialization.XmlTextAttribute()]public string[] Text{    get    {        return this.textField;    }    set    {        this.textField = value;    }}

XmlIgnoreAttribute类

   指示该特性修饰的对象在Xml序列化时不会序列化该特性指定的元素。

应用示例

public class TeamGroup{    [XmlIgnore]   public string Comment;    public string GroupName;}

用来控制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序列化和反序列化常用类和属性是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯