【发布时间】:2010-10-14 16:57:32
【问题描述】:
我正在使用 XmlSerializer。它可以很好地序列化对象,但客户端要求所需的空元素采用这种格式<star:Confirm/>。序列化程序将空元素序列化为<star:Confirm></star:Confirm>,有没有办法将其更改为序列化客户端所需的方式。
【问题讨论】:
标签: c# xmlserializer
我正在使用 XmlSerializer。它可以很好地序列化对象,但客户端要求所需的空元素采用这种格式<star:Confirm/>。序列化程序将空元素序列化为<star:Confirm></star:Confirm>,有没有办法将其更改为序列化客户端所需的方式。
【问题讨论】:
标签: c# xmlserializer
在尝试了不同的事情后,我意外地遇到了解决方案。我将XmlElementAttribute.IsNullable 设置为true,就像之前建议的答案一样。
[System.Xml.Serialization.XmlElementAttribute(ElementName = "Confirm", IsNullable=true)]
public ConfirmType Confirm
{
get
{
return this.confirmField;
}
set
{
this.confirmField = value;
this.RaisePropertyChanged("Confirm");
}
}
然后在代码中设置确认类型时,我使用了默认构造函数,而不是将 Confirm 设置为 null。
retval.ConfirmBODDataArea.Confirm = new ConfirmType();
这个序列化为<star:Confirm/>
【讨论】:
您可以尝试将XmlElementAttribute.IsNullable 属性设置为true。但是,请记住xsi:nil="true" 属性将因此被输出。
【讨论】: