Maison >développement back-end >C++ >Comment remplir un dictionnaire avec des données XML en utilisant C# ?

Comment remplir un dictionnaire avec des données XML en utilisant C# ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 00:01:42648parcourir

How to Populate a Dictionary with XML Data Using C#?

Dictionnaire de remplissage avec des données XML

Étant donné un dictionnaire vide et XML personnalisé au format :

<items>
  <item>

Pour remplir le dictionnaire avec des données du XML et le sérialiser, nous utiliserons une classe personnalisée et la classe XmlSerializer.

Sérialisation utilisant Classe personnalisée

  1. Définir un élément de classe personnalisé pour agir comme un conteneur temporaire pour le XML data :
public class item
{
    [XmlAttribute]
    public int id;
    [XmlAttribute]
    public string value;
}
  1. Créez une instance de XmlSerializer avec les attributs root et type appropriés :
XmlSerializer serializer = new XmlSerializer(typeof(item[]), 
                                 new XmlRootAttribute() { ElementName = "items" });
  1. Sérialisez le dictionnaire en le convertissant à un tableau d'objets d'élément et en sérialisant le array :
serializer.Serialize(stream, 
              dict.Select(kv=>new item(){id = kv.Key,value=kv.Value}).ToArray() );

Désérialisation à l'aide d'une classe personnalisée

  1. Désérialiser le XML en un tableau d'objets élément :
var orgDict = ((item[])serializer.Deserialize(stream))
               .ToDictionary(i => i.id, i => i.value);

Alternative : Utilisation de XElement

Si vous préférez utiliser le XElement class:

Sérialisation à l'aide de XElement

  1. Créer un objet XElement représentant la structure XML :
XElement xElem = new XElement(
                    "items",
                    dict.Select(x => new XElement("item",new XAttribute("id", x.Key),new XAttribute("value", x.Value)))
                 );
var xml = xElem.ToString(); //xElem.Save(...);

Désérialisation à l'aide de XElement

  1. Analyser le XML dans un XElement object :
XElement xElem2 = XElement.Parse(xml); //XElement.Load(...)
  1. Extraire les données du XML à l'aide de LINQ et remplir le dictionnaire :
var newDict = xElem2.Descendants("item")
                    .ToDictionary(x => (int)x.Attribute("id"), x => (string)x.Attribute("value"));

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