XML反序列化缺少的元素

时间:2014-02-05 14:05:47

标签: c# asp.net xml serialization

我正在将一些XML反序列化到我的班级,这一切都很好。我想要发生的是,如果XML不包含我的一个类属性的元素,而不是将该属性设置为null,我希望它等同于String.Empty。

例如,这是XML:

<Person>
    <Title>Mr</Title>
    <FullName>John Smith</FullName>
</Person>

这是班级:

[XmlRoot("Person")]
public sealed class PersonObject
{
    [XmlElement("Title")]
    public string NamePrefix { get; set; }

    [XmlElement("FullName")]
    public string FullName { get; set; }

    [XmlElement("JobTitle")]
    public string JobTitle { get; set; }
}

目前,如果我反序列化到此对象,JobTitle将设置为null。我希望将其设置为空字符串,就像我在XML中传递JobTitle一样,但将值设置为空。

是否可以使用序列化方法中的某种属性来执行此操作?

1 个答案:

答案 0 :(得分:7)

可以使用默认值的支持字段来执行此操作:

private string jobTitle = "";

[XmlElement("JobTitle")]
public string JobTitle { get {return jobTitle;} set {jobTitle = value;} }

或将其设置为默认构造函数:

public PersonObject()
{
    JobTitle = "";
    NamePrefix = "";
    FullName = "";
}
相关问题