Я использую XmlSerializer. Он отлично сериализует объект, но клиент требует, чтобы необходимые пустые элементы были в этом формате <star:Confirm/>
. Вместо этого сериализатор сериализует пустые элементы в <star:Confirm></star:Confirm>
, есть ли способ изменить его, чтобы сериализовать так, как требует клиент.
изменить способ сериализации XmlSerializer пустых элементов
Ответы (2)
Попробовав разные вещи, я случайно наткнулся на решение. Я установил для 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");
}
}
Затем при установке типа подтверждения в коде я использовал конструктор по умолчанию вместо того, чтобы установить для подтверждения значение null.
retval.ConfirmBODDataArea.Confirm = new ConfirmType();
Это сериализовано как <star:Confirm/>
person
Chris Lunt
schedule
14.10.2010
Спасибо, что напомнили мне о значениях по умолчанию и о том, что я должен использовать конструктор по умолчанию вместо = Nothing в коде vb.net! :)
- person Ian Grainger; 02.11.2016
Вы можете попробовать установить свойство XmlElementAttribute.IsNullable
до true
. Однако имейте в виду, что в результате будет выведен атрибут xsi:nil="true"
.
person
Ondrej Tucny
schedule
14.10.2010