使用空节点反序列化C#XML
我正在尝试将XML反序列化为对象MyClass。XML如下所示:使用空节点反序列化C#XML,c#,xml,serialization,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&l
<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>
下面是我尝试反序列化类对象的类声明
[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; }
}
您需要重命名或删除MyClass节点,因为它在xml中定义了两次,我将我的类的所有数字成员转换为double,并正确地反序列化了它如何声明
MyClass
?很抱歉,该描述已更新。您在根目录下有另一个MyClass节点,这可能就是原因。尝试删除它,并且只使用一个MyClass作为根。谢谢Selman,我想你可能是对的,让我试试。谢谢Bhanu,我会试试的。目前还不太确定如何删除节点,但我将尝试一些方法。Shi Bhanu,我遇到以下异常:System.InvalidOperationException:XML文档(1,2)中存在错误。-->System.InvalidOperationException:不应为。在将根属性节点更改为MyClassCalcMay时,您是否可以向我发送您正在使用0.91766552047165573 8 11 12 0 0.02 7.0589655420896529尝试的xml,我现在通过将声明上方的[XmlRoot(“MyClass”)]更改为[XmlRoot(“MyClassCalc”)]来清除错误,但我仍然得到空值
[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; }
}