• <经验杂谈>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之间的结构映射,希望足够程序师们对付日常工作。

  • 相关阅读:
    Js前端路由管理器函数
    js前端登录js脚本
    docker部署certbot与nginx来获取ssl证书添加https及自动更新
    spring boot不同版本的优雅关闭(graceful shutdown)和在windows下winsw服务方式运行的配置
    php下载
    在k8s中导出jvm内存错误dump文件到OSS
    基于alpine构建jdk镜像遇到的坑
    UML建模综述
    Web安全攻防渗透测试实战指南之工具
    数字签名、数字证书是什么?
  • 原文地址:https://www.cnblogs.com/benpao/p/4491440.html
Copyright © 2020-2023  润新知