【问题标题】:change how XmlSerializer serializes empty elements更改 XmlSerializer 序列化空元素的方式
【发布时间】:2010-10-14 16:57:32
【问题描述】:

我正在使用 XmlSerializer。它可以很好地序列化对象,但客户端要求所需的空元素采用这种格式<star:Confirm/>。序列化程序将空元素序列化为<star:Confirm></star:Confirm>,有没有办法将其更改为序列化客户端所需的方式。

【问题讨论】:

    标签: c# xmlserializer


    【解决方案1】:

    在尝试了不同的事情后,我意外地遇到了解决方案。我将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/>

    【讨论】:

    • 感谢您提醒我有关默认值的信息,并且我应该在 vb.net 代码中使用默认构造函数而不是 = Nothing! :)
    【解决方案2】:

    您可以尝试将XmlElementAttribute.IsNullable 属性设置为true。但是,请记住xsi:nil="true" 属性将因此被输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多