使用NULL节点的C#XML反序列化

时间:2018-07-15 01:28:10

标签: c# xml serialization

我试图将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; }
            }

2 个答案:

答案 0 :(得分:0)

您需要重命名或删除xml中两次定义的MyClass节点

答案 1 :(得分:0)

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