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

目录
相关文章
|
1月前
|
XML 存储 BI
如何把一个 ABAP 类的实例,序列化成 XML 字符串试读版
如何把一个 ABAP 类的实例,序列化成 XML 字符串试读版
13 0
|
2月前
|
XML 存储 API
[序列化协议] --- XML
[序列化协议] --- XML
29 0
|
4月前
|
XML 存储 JSON
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
开发时经常会遇到需要保存配置的情况,最常见的实现方式是将对象序列化成Json,再写入文件并保存到本地磁盘。 本文将使用开源库**ApeFree.DataStore**来替换原有的对象存储过程,实现一个可以随意切换存储方式的对象存储方法。 ApeFree.DataStore是一款可配置的对象存储库,支持在不同平台/介质中对内存中的对象进行存储与还原(如本地存储、注册表存储)。支持配置序列化格式(如Json、Xml),支持配置压缩算法(如GZip、Defalte),支持配置加密算法(如AES、RSA)。
68 0
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
|
XML JSON 数据格式
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
244 0
|
存储 XML JSON
二进制序列化器、XML序列化器、Json序列化器
序列化是将对象的状态信息转换未可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区读取或反序列化对象的状态,重新创建对象。
|
XML JavaScript 数据格式
【Groovy】xml 序列化 ( 使用 StreamingMarkupBuilder 生成 xml 数据 | mkp.xmlDeclaration() 生成 xml 版本数据 )
【Groovy】xml 序列化 ( 使用 StreamingMarkupBuilder 生成 xml 数据 | mkp.xmlDeclaration() 生成 xml 版本数据 )
338 0
【Groovy】xml 序列化 ( 使用 StreamingMarkupBuilder 生成 xml 数据 | mkp.xmlDeclaration() 生成 xml 版本数据 )
|
XML 数据格式
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )
299 0
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )
|
XML 自然语言处理 数据格式
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )
249 0
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )
|
XML 存储 JSON
Protocol Buffers,一款比xml快100倍的序列化框架!
Protocol Buffers,一款比xml快100倍的序列化框架!
325 0
Protocol Buffers,一款比xml快100倍的序列化框架!
|
XML 开发框架 .NET
【原创】ASP.NET WebApi接收xml文件 xml序列化
如何新建WebApi项目就不用我介绍了吧。 直接进入正题。 首先,在.net平台不论要接收什么,肯定是从Request里获取。 大家肯定对普通的参数获取非常熟悉了,下面就介绍一下如何从Request获取文件流. System.IO.Stream sm =Request.Content.ReadAsStreamAsync().Result 这个方法返回的是一个System.IO.Stream类型,如果是单纯想获得文件,到这一步你就可以把它保存到本地了。
9110 0