XmlSerializer et List
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>
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>
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>
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>
La désérialisation devient alors :
<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(User)); User userArray = (User)serializer.Deserialize(streamOrStringReader);</code>
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!