加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – XML反序列化缺少的元素

发布时间:2020-12-16 01:59:51 所属栏目:百科 来源:网络整理
导读:我正在将一些 XML反序列化到我的课程中,这一切都很好.我想要发生的是,如果XML不包含我的一个类属性的元素,而不是将该属性设置为null,我希望它相当于String.Empty. 例如,这是XML: Person TitleMr/Title FullNameJohn Smith/FullName/Person 这是班级: [XmlR
我正在将一些 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一样,但将值设置为空.

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

解决方法

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

private string jobTitle = "";

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

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

public PersonObject()
{
    JobTitle = "";
    NamePrefix = "";
    FullName = "";
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读