Maison >développement back-end >C++ >Comment désérialiser XML en une liste d'objets en C# ?

Comment désérialiser XML en une liste d'objets en C# ?

DDD
DDDoriginal
2025-01-13 08:13:46462parcourir

How to Deserialize XML into a List of Objects in C#?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn