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/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!