2011-06-24 7 views
7

Bunun gibi bir sınıfım var:Xzx1 için XmlElementAttribute nasıl kullanılır?

public class Level 
{ 
    [XmlAttribute] 
    public string Guid { get; set; } 
} 

public class LevelList : List<Level> 
{ 
} 

public class Test 
{ 
    public LevelList CalLevelList { get; set; } 
} 

XmlSerializer kullanarak, çıktıyı şu şekilde elde ederim:

  <CalLevelList> 
     <Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/> 
     <Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/> 
     </CalLevelList> 

Teknik olarak doğrudur. Bununla birlikte, sınıf isimlerini değiştirmeden, çıktıyı şöyle görünmesini istiyorum:

  <Levels> 
     <L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/> 
     <L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/> 
     </Levels> 

Bunun özelliklerle yapıldığını biliyorum, ancak nasıl olduğunu anlayamadım. Test sınıfına şu şekilde bir nitelik eklediğimde:

 public class Test 
    { 
     [XmlElement("Levels")] 
     public LevelList CalLevelList { get; set; } 
    } 

çıktı oldukça şaşırtıcıdır:

<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/> 
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/> 

Yani, ana düğümü kaybettim. Belirttiğim öğe adı bir düğüm adı olur. Neden bu? Nasıl çalıştırılır?

cevap

14

bu deneyin:

public class Test 
{ 
    [XmlArray("Levels")] 
    [XmlArrayItem("L")] 
    public LevelList CalLevelList { get; set; } 
} 
+0

Çalışıyor. Çok teşekkür ederim! – newman