2010-10-14 45 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