Heim > Backend-Entwicklung > C++ > Wie serialisiere und deserialisiere ich ein Wörterbuch aus benutzerdefiniertem XML, ohne XElement zu verwenden?

Wie serialisiere und deserialisiere ich ein Wörterbuch aus benutzerdefiniertem XML, ohne XElement zu verwenden?

Barbara Streisand
Freigeben: 2025-01-04 11:56:35
Original
417 Leute haben es durchsucht

How to Serialize and Deserialize a Dictionary from Custom XML Without Using XElement?

Serialisieren und Deserialisieren in ein Wörterbuch aus benutzerdefiniertem XML ohne XElement

Bei Vorlage eines leeren Dictionary und benutzerdefinierte XML-Daten, wie das bereitgestellte Beispiel:

<items>
  <item>
Nach dem Login kopieren

Die Aufgabe, das Wörterbuch mit den bereitgestellten Schlüsseln und Werten zu füllen und es wieder in XML zu serialisieren, kann ohne Verwendung von XElement erreicht werden.

Deserialisierung

Eine temporäre Elementklasse kann eingeführt werden:

public class item
{
    [XmlAttribute]
    public int id;
    [XmlAttribute]
    public string value;
}
Nach dem Login kopieren

An Beispielwörterbuch kann wie folgt deklariert werden:

Dictionary<int, string> dict = new Dictionary<int, string>()
{
    {1,"one"}, {2,"two"}
};
Nach dem Login kopieren

Um das XML in das Wörterbuch zu deserialisieren, erstellen Sie ein XmlSerializer-Objekt:

XmlSerializer serializer = new XmlSerializer(typeof(item[]), 
                                 new XmlRootAttribute() { ElementName = "items" });
Nach dem Login kopieren

Der Deserialisierungsprozess kann dann durchgeführt werden:

var orgDict = ((item[])serializer.Deserialize(stream))
               .ToDictionary(i => i.id, i => i.value);
Nach dem Login kopieren

Serialisierung

Zum Serialisieren des Wörterbuchs Zurück in XML folgen Sie diesen Schritten:

serializer.Serialize(stream, 
              dict.Select(kv=>new item(){id = kv.Key,value=kv.Value}).ToArray() );
Nach dem Login kopieren

Alternative: Verwendung von XElement (falls bevorzugt)

Wenn XElement bevorzugt wird, kann der folgende Ansatz sein Verwendet:

Serialisierung

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(...);
Nach dem Login kopieren

Deserialisierung

XElement xElem2 = XElement.Parse(xml); //XElement.Load(...)
var newDict = xElem2.Descendants("item")
                    .ToDictionary(x => (int)x.Attribute("id"), x => (string)x.Attribute("value"));
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich ein Wörterbuch aus benutzerdefiniertem XML, ohne XElement zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage