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
Linda Hamiltonoriginal
2025-01-13 09:11:44758parcourir

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>

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>

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>

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!

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