2012-12-11 19 views
7

Başka bir listenin içinde bir liste var (varyantları olan bir ürün). Üst listenin kendisine atanan özniteliklere sahip olmasını isterim (yalnızca bir id ve bir name).Niteliklere sahip bir listenin XML seri hale getirilmesi

İstenilen Çıktı

<embellishments> 
    <type id="1" name="bar bar foo"> 
     <row> 
      <id>1</id> 
      <name>foo bar</name> 
      <cost>10</cost> 
     </row>  
    </type> 
</embellishments> 

Güncel Kod

[XmlRoot(ElementName = "embellishments", IsNullable = false)] 
public class EmbellishmentGroup 
{ 
    [XmlArray(ElementName="type")] 
    [XmlArrayItem("row", Type=typeof(Product))] 
    public List<Product> List { get; set; } 

    public EmbellishmentGroup() { 
     List = new List<Product>(); 
     List.Add(new Product() { Id = 1, Name = "foo bar", Cost = 10m }); 
    } 
} 

public class Product 
{ 
    [XmlElement("id")] 
    public int Id { get; set; } 

    [XmlElement("name")] 
    public string Name { get; set; } 

    [XmlElement("cost")] 
    public decimal Cost { get; set; } 
} 

Akım Çıkış

<embellishments> 
    <type> 
     <row> 
      <id>1</id> 
      <name>foo bar</name> 
      <cost>10</cost> 
     </row> 
    </type> 
</embellishments> 

cevap

9

Sen type öğesini temsil başka bir sınıf yapmak gerekir. Daha sonra, aşağıdaki gibi özellikler için özelliklere ekleyebilirsiniz:

[XmlRoot(ElementName = "embellishments", IsNullable = false)] 
public class EmbellishmentGroup 
{ 
    [XmlElement("type")] 
    public MyType Type { get; set; } 

    public EmbellishmentGroup() 
    { 
     Type = new MyType(); 
    } 
} 

public class MyType 
{ 
    [XmlAttribute("id")] 
    public int Id { get; set; } 

    [XmlAttribute("name")] 
    public string Name { get; set; } 

    [XmlElement("row")] 
    public List<Product> List { get; set; } 

    public MyType() 
    { 
     Id = 1; 
     Name = "bar bar foo"; 
     List = new List<Product>(); 
     Product p = new Product(); 
     p.Id = 1; 
     p.Name = "foo bar"; 
     p.Cost = 10m; 
     List.Add(p); 
    } 
} 

public class Product 
{ 
    [XmlElement("id")] 
    public int Id { get; set; } 

    [XmlElement("name")] 
    public string Name { get; set; } 

    [XmlElement("cost")] 
    public decimal Cost { get; set; } 
} 
İlgili konular