Heim >Backend-Entwicklung >C++ >Wie fülle ich ein Wörterbuch mithilfe von C# mit XML-Daten?

Wie fülle ich ein Wörterbuch mithilfe von C# mit XML-Daten?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 00:01:42629Durchsuche

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

Bevölkerungswörterbuch mit XML-Daten

Gegeben ein leeres Wörterbuch und benutzerdefiniertes XML im Format:

<items>
  <item>

Um das Wörterbuch mit Daten aus dem XML zu füllen und es wieder zu serialisieren, verwenden wir eine benutzerdefinierte Klasse und die XmlSerializer-Klasse.

Serialisierung mit Benutzerdefinierte Klasse

  1. Definieren Sie ein benutzerdefiniertes Klassenelement, das als temporärer Container für das XML fungiert Daten:
public class item
{
    [XmlAttribute]
    public int id;
    [XmlAttribute]
    public string value;
}
  1. Erstellen Sie eine XmlSerializer-Instanz mit den entsprechenden Stamm- und Typattributen:
XmlSerializer serializer = new XmlSerializer(typeof(item[]), 
                                 new XmlRootAttribute() { ElementName = "items" });
  1. Serialisieren Sie das Wörterbuch, indem Sie es konvertieren zu einem Array von Item-Objekten und Serialisierung der Array:
serializer.Serialize(stream, 
              dict.Select(kv=>new item(){id = kv.Key,value=kv.Value}).ToArray() );

Deserialisierung mit benutzerdefinierter Klasse

  1. Deserialisierung des XML in ein Array von Elementobjekten:
var orgDict = ((item[])serializer.Deserialize(stream))
               .ToDictionary(i => i.id, i => i.value);

Alternative : Verwenden von XElement

Wenn Sie lieber das XElement verwenden möchten Klasse:

Serialisierung mit XElement

  1. Erstellen Sie ein XElement-Objekt, das die XML-Struktur darstellt:
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 mit XElement

  1. Parsen Sie das XML in ein XElement Objekt:
XElement xElem2 = XElement.Parse(xml); //XElement.Load(...)
  1. Extrahieren Sie Daten aus dem XML mit LINQ und füllen Sie das Wörterbuch:
var newDict = xElem2.Descendants("item")
                    .ToDictionary(x => (int)x.Attribute("id"), x => (string)x.Attribute("value"));

Das obige ist der detaillierte Inhalt vonWie fülle ich ein Wörterbuch mithilfe von C# mit XML-Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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