2010-06-02 17 views
5

Ben XML serializer'da etiketini nasıl durdurup boşaltabilirim?

<Address /> 

bir yol değildir var mı böyle bir nesne, Şimdi

public class UserObj 
{ 
    public string First {get; set;} 
    public string Last {get; set;} 
    public addr Address {get; set;} 

} 

public class addr 
{ 
    public street {get; set;} 
    public town {get; set;} 
} 

Ben ve sokak ve kasaba XmlSerializer'ı kullanmak ben XML çıktısında bu olsun boş var Bu boş etiketi çıktı?

Teşekkür

+2

Neden boş etiketlerden kaçınmanız gerekiyor? Onlar geçerli XML, değil mi? –

cevap

3

Sen Adres özelliği seri gerekip gerekmediğini karar vermek için bir ShouldSerializeAddress yöntemi uygulayabilir özelliği serileştirmeden önce.

public bool AddressSpecified 
{ 
    get 
    { 
     return Address != null 
      && !String.IsNullOrEmpty(Address.street) 
      && !String.IsNullOrEmpty(Address.town); 
    } 
} 
0

Sen özelliğine DefaultValue özellik ekleyerek boş değerini ortadan kaldırabilir:

Alternatif olarak, aynı rolü olan bir AddressSpecified özelliğini uygulayabilirsiniz. Özelliğin değeri varsayılan değerle eşleştiğinde, serileştirilmez. Serileşmeyi ortadan kaldırmak için varsayılan değeri null olarak ayarlarsınız. Örnek:


using System.ComponentModel; 
public class UserObj 
{ 
    public string First {get; set;} 
    public string Last {get; set;} 

    [DefaultValue(null)] 
    public addr Address {get; set;} 

} 
0

Adres alanına boş değer atamayı düşünüyorum.

İlgili konular