Maison > développement back-end > C++ > Comment désérialiser XML dans une liste à l'aide de XmlSerializer ?

Comment désérialiser XML dans une liste à l'aide de XmlSerializer ?

Barbara Streisand
Libérer: 2025-01-13 07:59:57
original
138 Les gens l'ont consulté

How to Deserialize XML into a List Using XmlSerializer?

XmlSerializer et List Désérialisation : un guide pratique

La classe XmlSerializer offre une méthode simple pour désérialiser les données XML en différents types de données, y compris des listes d'objets personnalisés. Ce guide présente deux approches pour y parvenir.

Méthode 1 : Utiliser une classe Wrapper

Pour désérialiser XML en List<User>, une classe wrapper est nécessaire pour servir d'élément racine dans la structure XML. Considérez la classe UserList :

<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>
Copier après la connexion

Cette classe encapsule une liste de User objets. L'attribut [XmlRoot("user_list")] désigne "user_list" comme élément racine dans le XML. L'attribut [XmlElement("user")] mappe chaque objet User à un élément "utilisateur".

Ensuite, définissez la User classe :

<code class="language-csharp">public class User
{
    [XmlElement("id")]
    public Int32 Id { get; set; }

    [XmlElement("name")]
    public String Name { get; set; }
}</code>
Copier après la connexion

Enfin, utilisez XmlSerializer pour la désérialisation :

<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(UserList));
UserList userList = (UserList)serializer.Deserialize(streamOrStringReader);</code>
Copier après la connexion

Remplacez streamOrStringReader par votre objet Stream ou StringReader contenant les données XML.

Méthode 2 : Désérialisation directe des tableaux

Vous pouvez également intégrer la liste directement dans la classe User, simplifiant ainsi le processus :

<code class="language-csharp">[XmlRoot("user_list")]
public class User
{
    public User[] Items { get; set; }
}</code>
Copier après la connexion

La désérialisation devient alors :

<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(User));
User userArray = (User)serializer.Deserialize(streamOrStringReader);</code>
Copier après la connexion

La propriété Items contient désormais un tableau d'objets User.

Choisir la bonne méthode

L'approche de classe wrapper (méthode 1) offre une plus grande flexibilité, tandis que la méthode de tableau direct (méthode 2) offre une solution plus concise. Le meilleur choix dépend de la structure spécifique de vos données XML et de vos préférences personnelles.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal