XML反序列化缺少的元素

Mar*_*ark 3 c# xml asp.net serialization

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

例如,这是XML:

<Person>
    <Title>Mr</Title>
    <FullName>John Smith</FullName>
</Person>
Run Code Online (Sandbox Code Playgroud)

这是班级:

[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; }
}
Run Code Online (Sandbox Code Playgroud)

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

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

D S*_*ley 7

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

private string jobTitle = "";

[XmlElement("JobTitle")]
public string JobTitle { get {return jobTitle;} set {jobTitle = value;} }
Run Code Online (Sandbox Code Playgroud)

或者在默认构造函数中设置它:

public PersonObject()
{
    JobTitle = "";
    NamePrefix = "";
    FullName = "";
}
Run Code Online (Sandbox Code Playgroud)