首页 > 解决方案 > 使用 NULL 节点的 C# XML 反序列化

问题描述

我正在尝试将 XML 反序列化为对象 MyClass。XML 在这里:

<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <var1 Type="Numeric">0.91766552047165573</var1>
      <var2 Type="Numeric">8</var2>
      <var3 Type="Numeric">11</var3>
      <var4 Type="Numeric">12</var4>
      <var5 Type="Numeric">0</var5>
      <var6 Type="Numeric">0.02</var6>
      <var7 Type="Financial" Currency="USD">7.0589655420896529</var7>
</MyClass>

以及下面的代码块。

private string SerializeXml(string xml)
        {
            var _xml = @xml;
            var serializer = new XmlSerializer(typeof(MyClass));
            using (var reader = new StringReader(xml))
            {
                MyClass myClass = (MyClass)serializer.Deserialize(reader);

            }

            return string.Empty;
        }

类声明在我尝试反序列化类对象的位置下方

    [XmlRoot("MyClass")]
    [Serializable]
            public class MyClass
            {
                [System.Xml.Serialization.XmlElement("var1")]
                public DataValue var1 { get; set; }
                [System.Xml.Serialization.XmlElement("var2")]
                public DataValue var2 { get; set; }
                [System.Xml.Serialization.XmlElement("var3")]
                public DataValue var3 { get; set; }
                [System.Xml.Serialization.XmlElement("var4")]
                public DataValue var4 { get; set; }
                [System.Xml.Serialization.XmlElement("var5")]
                public DataValue var5 { get; set; }
                [System.Xml.Serialization.XmlElement("var6")]
                public DataValue var6 { get; set; }
                [System.Xml.Serialization.XmlElement("var7")]
                public DataValue var7 { get; set; }
            }

标签: c#xmlserialization

解决方案


反序列化无法识别我使用的数据类型,我将类的所有数字成员都转换为 double 并且它正确反序列化


推荐阅读