Maison > développement back-end > C++ > XmlSerializer peut-il désérialiser XML dans une liste ?

XmlSerializer peut-il désérialiser XML dans une liste ?

Linda Hamilton
Libérer: 2025-01-13 09:11:44
original
752 Les gens l'ont consulté

Can XmlSerializer Deserialize XML into a List?

XmlSerializer et List Désérialisation

Peut-on XmlSerializer désérialiser des données XML directement dans un List<T> ? Examinons cela avec un exemple de structure XML et une classe C# correspondante.

Exemple XML :

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

Classe d'utilisateurs C# :

<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

La désérialisation directe vers List<User> n'est pas directement prise en charge par XmlSerializer. Cependant, une solution de contournement simple permet d'y parvenir.

Solution : boucler la liste

La solution consiste à créer une classe wrapper qui contient le List<User>:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Xml.Serialization;

[XmlRoot("user_list")]
public class UserListWrapper
{
    public UserListWrapper() { Users = new List<User>(); }
    [XmlElement("user")]
    public List<User> Users { get; set; }
}</code>
Copier après la connexion

En utilisant cette UserListWrapper classe, la désérialisation devient simple. Le XmlSerializer remplira la liste Users dans le wrapper. Après la désérialisation, vous pouvez alors accéder au List<User> depuis la propriété Users du wrapper. Un tableau (User[]) peut également être utilisé à la place de la liste dans la classe wrapper, selon vos préférences.

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