2010-10-14 50 views
3

我正在使用XmlSerializer。它可以很好地序列化对象,但客户端要求所需的空元素为<star:Confirm/>。序列化器将空元素序列化为<star:Confirm></star:Confirm>是否有方法将其更改为序列化客户端所需的方式。更改XmlSerializer如何序列化空元素

回答

7

尝试不同的事情后,我意外地发生了解决方案。我将XmlElementAttribute.IsNullable设置为正确,就像之前提出的答案。

[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/>

+0

谢谢你提醒我关于默认值,我应该使用默认的构造函数,而不是在vb.net代码=什么也没有! :) – 2016-11-02 13:49:36