更改XmlSerializer如何序列化空元素

3

我正在使用XmlSerializer。它可以很好地序列化对象,但客户要求必须以这种格式<star:Confirm/>呈现空元素。然而,序列化程序将空元素序列化为<star:Confirm></star:Confirm>,是否有方法可以更改序列化方式以满足客户的要求。

2个回答

7

在尝试了不同的方法之后,我意外地找到了解决方案。就像前面的答案建议的那样,我将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/>

谢谢你提醒我关于默认值的问题,以及我应该在vb.net代码中使用默认构造函数而不是= Nothing! :) - Ian Grainger

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接