zoukankan      html  css  js  c++  java
  • <经验杂谈>C#/.Net中xml的Serialization序列化与DeSerializetion反序列化

      1.先讲概念:.Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和从XML中反序列化为对象。Serializer的使用比较直观,需要多注意的是XML序列化相关的Attribute,怎么把这些attribute应用到我们的对象,以及对象公共属性上面去,生成满足预期格式的XML。
      本文列出了最常用的方法和特性,涵盖日常大部分的转换工作,希望大家在工作中快速上手。为了给大家直观的印象,这里给出具体的使用代码,为了节省篇幅,代码异常处理没有添加,各位程序师们使用的时候酌情添加。

      2.上代码:

            /// <summary>
            /// xml序列化
            /// </summary>
            /// <param name="obj">实体对象</param>
            /// <returns>返回不带命名空间的xml字符串</returns>
            public static string ObjectToXml(object obj)
            {
                string msg;
                var xml = new XmlSerializer(obj.GetType());
                var stream = new MemoryStream();
                var n = new XmlSerializerNamespaces();
                n.Add(string.Empty, string.Empty);
                xml.Serialize(stream, obj, n);
                stream.Position = 0;
                using (var reader = new StreamReader(stream))
                {
                    msg = reader.ReadToEnd();
                    stream.Close();
                }
                return msg;
            }
    
            /// <summary>
            /// xml反序列化
            /// </summary>
            /// <param name="xml">xml字符串</param>
            /// <param name="objType">对象类型</param>
            /// <returns></returns>
            public static object XmlToObject(string xml, Type objType)
            {
                object obj;
                if (string.IsNullOrWhiteSpace(xml)) return null;
                using (var reader = new StringReader(xml))
                {
                    var ser = new XmlSerializer(objType);
                    obj = ser.Deserialize(reader);
                    reader.Close();
                }
                return obj;
            }

    这里主要讲了Xml Serializer的用法,C#类和Xml之间的结构映射,希望足够程序师们对付日常工作。

  • 相关阅读:
    titlebar和actionbar上的按钮设置
    Android 实现闹钟功能
    关于禁止ViewPager预加载问题【转】
    RabbitMQ基础概念详细介绍
    Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
    Android4.0的Alertdialog对话框,设置点击其他位置不消失
    android MediaCodec 音频编解码的实现——转码
    一个android的各种控件库
    golang的验证码相关的库
    android studio提示unable to run mksdcard sdk
  • 原文地址:https://www.cnblogs.com/benpao/p/4491440.html
Copyright © 2011-2022 走看看