我使用Visual Studio 2013功能从#XML创建了该类"将XML粘贴为Class"。我正在反序列化xml。如果我在xml中得到一个空白节点,在Blank xml节点的情况下,我得到类的相应变量为" {object}"而不是null:
<ADDRESS>
<LINE1>30 John Islip Street</LINE1>
<LINE2 />
<LINE3 />
<LINE4 />
</ADDRESS>
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class ADDRESS
{
/// <remarks/>
public string LINE1{get;set;}
/// <remarks/>
public object LINE2{get;set;}
/// <remarks/>
public object LINE3{get;set;}
/// <remarks/>
public object LINE4{get;set;}
}
反序列化代码:
var reader = new StringReader(xmlString);
var serializer = new XmlSerializer(typeof(ADDRESS));
var instance = (ADDRESS)serializer.Deserialize(reader);
对于字段LINE2,LINE3,LINE4,我们得到的值是&#34; {object}&#34;而不是null。
答案 0 :(得分:1)
这是正确的行为。你的xml包含节点Line2 - Line4,所以它在你的类中。
如果您将Line2 - Line4的类型更改为字符串,则可以获得&#34;&#34;在他们中。要在此属性中获取null,您不应在xml中包含此节点,或者此节点应具有属性nillable='true'
。