Serialisieren und Deserialisieren in ein Wörterbuch
Bei Vorlage eines leeren Dictionary
<items> <item>
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; }
An Beispielwörterbuch kann wie folgt deklariert werden:
Dictionary<int, string> dict = new Dictionary<int, string>() { {1,"one"}, {2,"two"} };
Um das XML in das Wörterbuch zu deserialisieren, erstellen Sie ein XmlSerializer-Objekt:
XmlSerializer serializer = new XmlSerializer(typeof(item[]), new XmlRootAttribute() { ElementName = "items" });
Der Deserialisierungsprozess kann dann durchgeführt werden:
var orgDict = ((item[])serializer.Deserialize(stream)) .ToDictionary(i => i.id, i => i.value);
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() );
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(...);
Deserialisierung
XElement xElem2 = XElement.Parse(xml); //XElement.Load(...) var newDict = xElem2.Descendants("item") .ToDictionary(x => (int)x.Attribute("id"), x => (string)x.Attribute("value"));
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!