изменить способ сериализации пустых элементов в XmlSerializer - PullRequest
3 голосов
/ 14 октября 2010

Я использую XmlSerializer. Он отлично сериализует объект, но клиент требует, чтобы необходимые пустые элементы были в этом формате <star:Confirm/>. Сериализатор вместо этого сериализует пустые элементы в <star:Confirm></star:Confirm>, есть способ изменить его для сериализации так, как требует клиент.

Ответы [ 2 ]

7 голосов
/ 15 октября 2010

Попробовав разные вещи, я случайно наткнулся на решение. Я установил для 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/>

3 голосов
/ 14 октября 2010

Вы можете попробовать установить для свойства XmlElementAttribute.IsNullable значение true.Однако, имейте ввиду, что атрибут xsi:nil="true" будет выведен как следствие.

...