Intereting Posts

Сериализация XML списка с атрибутами

У меня есть список внутри другого списка (продукт с вариантами). Я хотел бы, чтобы родительский список имел атрибуты, установленные на нем (просто id и name ).

Желаемый результат

    1 foo bar 10    

Текущий код

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

Токовый выход

    1 foo bar 10    

Вам нужно создать другой class, который представляет элемент type . Затем вы можете добавить к нему свойства для атрибутов, например:

 [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 List { get; set; } public MyType() { Id = 1; Name = "bar bar foo"; List = new List(); 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; } }