【发布时间】:2013-04-16 20:36:11
【问题描述】:
我有一个用于 Xml 序列化的类。
在其中我有一个可以为空的属性,用 XmlAttribute 装饰:
[XmlAttribute("lastUpdated")]
public DateTime? LastUpdated { get; set; }
如果属性为空或为空,如何从序列化中忽略该属性?
我已经尝试了以下方法,但是当有值时它不会序列化(总是忽略):
[XmlIgnore]
public DateTime? LastUpdatedValue { get; set; }
[XmlAttribute("lastUpdated")]
public DateTime LastUpdated { get; set; }
public bool ShouldSerializeLastUpdated()
{
return LastUpdatedValue.HasValue;
}
【问题讨论】:
-
您希望 XML 是什么样子?在这种情况下,如果属性为 null,您将获得
<lastUpdated xsi:nil="true"/>;您可以对 xml 进行后处理(更容易),也可以编写一个 XmlWriter 类(更难,性能更好)。还有其他一些选项既困难又使您的代码膨胀。 -
不,如果 xmlattribute 为空,我只想忽略它。但是日期时间?不可序列化。怎么换?
标签: c# asp.net xml serialization