当前位置: 首页 > news >正文

XML序列化点滴

在C#中用反射将XML转化成实体类时,发现了一个大小写的问题。


  <?xml version="1.0" encoding="gb2312"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://ww
w.w3.org/2001/XMLSchema">
  <common>
    <project_id>1</project_id>
    <gateway_id>1</gateway_id>
    <type>md5</type>
  </common>

  <gateway_id>1</gateway_id>

  <id_validate operation="md5">
 <md5>061e85ee43152b671a5f49039a6042cbb
</md5>

  </id_validate>
</root>

          

       [XmlRoot("root")]
        public class MD5
        {
            public MD5(string p, string p_2, string p_3)
            {
                this.Common = new common(p, p_2, "md5");
                this.idvalidate = new id_validate(p_3);
            }
            public MD5()
            {
                this.Common = new common(string.Empty, string.Empty, "md5");
                this.idvalidate = new id_validate(string.Empty);


            }

            [XmlElement(ElementName = "common")]
            public common Common { get; set; }
            [XmlElement(ElementName = "id_validate")]
            public id_validate idvalidate { get; set; }
        [XmlElement(ElementName = "gateway_Id")]
            public string gateway_Id { get; set; }


            public class id_validate
            {
                public id_validate()
                {
                    this.operation = "md5";
                    this.StrMD5 = "";
                }


                public id_validate(string p_3)
                {
                    this.operation = "md5";
                    this.StrMD5 = p_3;
                }
                [XmlAttribute(AttributeName = "md5")]
                public string operation
                {
                    get;
                    set;
                }
                [XmlElement(ElementName = "md5")]
                public string StrMD5 { get; set; }

            }


        }



这个时候,想要进行序列化和反序列化操作,其中对普通数据类型的序列化反序列化,比如gateway_Id节点,那么默认将实体类中的属性名作为对应的XML文本中节点名称。这样乍看一下好像没有什么问题,但是实际上,我发现,这样经常会出现反射到实体类中属性值有时候为空,在几经测试之后发现,原来是Xml文本反射到实体类中,根据实体类的属性名进行反射时,是大小写敏感的(我用的是XmlSerializer x = new XmlSerializer(md5.GetType());
             x.Serialize(Console.Out, md5);来反射实体类)

如果没有注意大小写,就没有办法正确地为实体类中的属性或公有字段赋值。



作者: kissazi2 
出处: http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2012/04/01/2977142.html

相关文章:

  • sqlalchemy(二)高级用法
  • eclipse properties 插件
  • CLR存储过程
  • 经典-输出规律的数字序列
  • 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析
  • datepicker使用
  • Xargs用法详解(原创)
  • 外部程序调用跨数据库的语句时:该事务管理器已经禁止了它对远程/网络事务的支持...
  • jQuery对象入门级介绍
  • Flexbox-CSS3弹性盒模型flexbox完整版教程
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • EF 增删改查 泛型方法、类
  • MongoDB 是如何鼓励和激励开发者社区的
  • dubbo源码分析系列——dubbo的SPI机制源码分析
  • Elasticsearch数据建模-关联查询
  • 2017-09-12 前端日报
  • 3.7、@ResponseBody 和 @RestController
  • 78. Subsets
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • AWS实战 - 利用IAM对S3做访问控制
  • git 常用命令
  • JavaScript DOM 10 - 滚动
  • PHP 小技巧
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • VuePress 静态网站生成
  • 笨办法学C 练习34:动态数组
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 分享几个不错的工具
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 数据仓库的几种建模方法
  • 王永庆:技术创新改变教育未来
  • 我与Jetbrains的这些年
  • 项目管理碎碎念系列之一:干系人管理
  • 小试R空间处理新库sf
  • 一、python与pycharm的安装
  • 用Python写一份独特的元宵节祝福
  • C# - 为值类型重定义相等性
  • raise 与 raise ... from 的区别
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #《AI中文版》V3 第 1 章 概述
  • #13 yum、编译安装与sed命令的使用
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C++17) std算法之执行策略 execution
  • (六)Hibernate的二级缓存
  • (五)IO流之ByteArrayInput/OutputStream
  • (状压dp)uva 10817 Headmaster's Headache
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET6 命令行启动及发布单个Exe文件