Как десериализовать дочерние элементы XML - PullRequest
0 голосов
/ 23 мая 2018

У меня есть следующий класс:

[XmlElement]
public class Container
{
   [XmlAttribute]
   public string Name { get; set; }

   //TODO: set xml serialization attribute.
   public List<Item> Items { get; set; }
}

Какой атрибут я должен использовать в свойстве Itmes, чтобы оно десериализовало дочерние элементы в список, учитывая следующий XML:

<Container Name="Container1">
   <Item>
   <Item>
   <Item>
</Container>

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Мне нужен этот атрибут:

[XmlElement("Item")]
0 голосов
/ 23 мая 2018

Используйте CollectionDataContract.Ваш Item является коллекцией внутри контейнера, поэтому они должны быть частью контейнера, а не отдельным свойством списка.

[CollectionDataContract(Name = "Container", Namespace = "")]
public class Container : System.Collections.Generic.List<Item>
{
     [XmlAttribute]
     public string Name { get; set; }
}

[DataContract(Name = "Item", Namespace = "")]
public class Item
{
   // Properties
}
...