带有属性的列表的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
您需要创建另一个表示type
元素的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; } }