Désérialisation XML C# vers liste d'objets
Dans certains cas, vous devrez peut-être désérialiser XML dans un format de données structuré, tel qu'une liste d'objets. Cet article explore les possibilités et les étapes nécessaires pour réaliser cette désérialisation spécifique.
Supposons que le XML suivant doive être converti en List<User>
:
<code class="language-xml"><?xml version="1.0"?><user_list><user><id>1</id><name>Joe</name></user><user><id>2</id><name>John</name></user></user_list></code>
Pour implémenter cette conversion, vous pouvez utiliser la classe XmlSerializer
. Cependant, afin de s'adapter à la structure du XML, celui-ci doit être légèrement modifié. Au lieu de désérialiser directement vers List<User>
, utilisez une classe intermédiaire contenant une liste.
Ce qui suit est un exemple d'implémentation d'une classe wrapper :
<code class="language-csharp">[XmlRoot("user_list")] public class UserList { public UserList() { Items = new List<User>(); } [XmlElement("user")] public List<User> Items { get; set; } }</code>
Avec la classe UserList
, le processus de désérialisation devient très simple :
<code class="language-csharp">XmlSerializer ser = new XmlSerializer(typeof(UserList)); UserList list = new UserList(); list.Items.Add(new User { Id = 1, Name = "abc" }); list.Items.Add(new User { Id = 2, Name = "def" }); list.Items.Add(new User { Id = 3, Name = "ghi" }); ser.Serialize(Console.Out, list);</code>
Cette sérialisation de liste étendue fournit une méthode plus propre et plus générale pour désérialiser XML dans une structure hiérarchique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!