博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML序列化点滴
阅读量:7177 次
发布时间:2019-06-29

本文共 1565 字,大约阅读时间需要 5 分钟。

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

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);来反射实体类)

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

转载地址:http://omfzm.baihongyu.com/

你可能感兴趣的文章
关于浏览器兼容处理的几种方式
查看>>
第一个Asp.net小项目,主页写了下后台代码
查看>>
(推荐使用)SpringMVC注解,基本配置
查看>>
ORA-12547: TNS:lost contact+oracle 开启监听失败
查看>>
软件工程结对作业01(四则运算网页版)
查看>>
解决开机自动调用脚本失败的问题
查看>>
LoadRunner监控图表与配置(二)监控运行状况和交易状况
查看>>
创建对象的几种方式
查看>>
《鸟哥的Linux私房菜》读书笔记--第0章 计算机概论 硬件部分
查看>>
02、学PHP可以干什么
查看>>
iOS - WXPay 微信支付
查看>>
tcp/ip高效编程总结
查看>>
hdu 4739 Zhuge Liang's Mines 2013 ACM/ICPC Asia Regional Hangzhou Online
查看>>
陈远波(java)--Git 入门
查看>>
动态新增文本框
查看>>
消息队列
查看>>
类型和成员基础
查看>>
【Java】同步阻塞式(BIO)TCP通信
查看>>
java基础自定义测试异常类
查看>>
第一章 第一节
查看>>