【问题标题】:Incorrect value in deserializating Xml to Class将 Xml 反序列化为 Class 时的值不正确
【发布时间】:2014-06-19 12:33:09
【问题描述】:

我使用 Visual Studio 2013 的“将 XML 粘贴为类”功能从 XML 创建了类。我正在反序列化 xml。如果我在 xml 中得到一个空白节点,在空白 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,我们将值作为“{object}”而不是 null。

【问题讨论】:

    标签: c# xml serialization deserialization


    【解决方案1】:

    这是正确的行为。您的 xml 包含节点 Line2 - Line4,因此它在您的类中。 如果将 Line2 - Line4 的类型更改为字符串,则可以在其中获得 ""。要在此属性中获取 null,您不应在 xml 中包含此节点,或者此节点应具有属性 nillable='true'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 2021-07-16
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多