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

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

Susan Sarandon
Freigeben: 2025-01-04 06:26:40
Original
804 Leute haben es durchsucht

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

Serialisieren und Deserialisieren eines Wörterbuchs aus benutzerdefiniertem XML ohne XElement

Stellen Sie sich ein Szenario vor, in dem Sie ein Dictionary und Sie müssen es in ein benutzerdefiniertes XML-Format wie das folgende serialisieren und daraus deserialisieren:

<items>
  <item>
Nach dem Login kopieren

Um diese Serialisierung und Deserialisierung ohne Verwendung von XElement zu erreichen:

Serialisierung

  1. Erstellen Sie ein temporäres Element Klasse:
public class Item
{
    [XmlAttribute]
    public int Id;
    [XmlAttribute]
    public string Value;
}
Nach dem Login kopieren
  1. Dictionary-Instanz initialisieren:
Dictionary<int, string> dict = new Dictionary<int, string>()
{
    { 1, "one" }, { 2, "two" }
};
Nach dem Login kopieren
  1. Eine XmlSerializer-Instanz erstellen:
XmlSerializer serializer = new XmlSerializer(typeof(Item[]), new XmlRootAttribute() { ElementName = "items" });
Nach dem Login kopieren
  1. Serialisieren Sie das Wörterbuch in XML:
serializer.Serialize(stream, dict.Select(kv => new Item() { Id = kv.Key, Value = kv.Value }).ToArray());
Nach dem Login kopieren

Deserialisierung

  1. Deserialisieren Sie das XML in ein Array von Item-Objekten:
var orgDict = ((Item[])serializer.Deserialize(stream))
               .ToDictionary(i => i.Id, i => i.Value);
Nach dem Login kopieren

Alternative mit XElement

Wenn Sie sich später für die Verwendung von XElement entscheiden, erfahren Sie hier, wie Sie und serialisieren können deserialisieren:

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 in benutzerdefiniertes 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