【发布时间】:2014-02-05 14:05:47
【问题描述】:
我正在将一些 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 一样,但将值设置为空。
是否可以使用序列化方法的某种属性来做到这一点?
【问题讨论】:
-
据我所知,您可能必须创建一个继承自
XmlElementAttribute的自定义属性才能完成此操作。我不得不问,为什么null很重要?你不能在你的代码中处理它吗? -
在我因此而调用的 Web 服务方法中,它不处理空值,我宁愿不必进行某种混乱的替换。我知道哪些字段可能为空,因为我在不同的 XML 输入之间共享架构。
标签: c# asp.net xml serialization