Vorgehensweise: Arbeiten mit Wörterbüchern unter Verwendung von LINQ to XML (C#)How to: Work with Dictionaries Using LINQ to XML (C#)

Es ist häufig sinnvoll, verschiedene Datenstrukturen in XML und aus XML in andere Datenstrukturen umzuwandeln.It is often convenient to convert varieties of data structures to XML, and XML back to other data structures. In diesem Thema wird eine konkrete Implementierung dieser allgemeinen Herangehensweise gezeigt, bei der ein Dictionary<TKey,TValue> in XML umgewandelt und dann wieder zurückgewandelt wird.This topic shows a specific implementation of this general approach by converting a Dictionary<TKey,TValue> to XML and back.

BeispielExample

In diesem Beispiel kommt eine Form einer funktionalen Konstruktion zum Einsatz, bei der eine Abfrage neue XElement-Objekte projiziert, woraufhin die sich dabei ergebende Auflistung als Argument an den Konstruktor des XElement-Objekts übergeben wird.This example uses a form of functional construction in which a query projects new XElement objects, and the resulting collection is passed as an argument to the constructor of the Root XElement object.

Dictionary<string, string> dict = new Dictionary<string, string>();  
dict.Add("Child1", "Value1");  
dict.Add("Child2", "Value2");  
dict.Add("Child3", "Value3");  
dict.Add("Child4", "Value4");  
XElement root = new XElement("Root",  
    from keyValue in dict  
    select new XElement(keyValue.Key, keyValue.Value)  
);  
Console.WriteLine(root);  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

<Root>  
  <Child1>Value1</Child1>  
  <Child2>Value2</Child2>  
  <Child3>Value3</Child3>  
  <Child4>Value4</Child4>  
</Root>  

BeispielExample

Der folgende Code erstellt aus dem XML-Code ein Wörterbuch:The following code creates a dictionary from XML.

XElement root = new XElement("Root",  
    new XElement("Child1", "Value1"),  
    new XElement("Child2", "Value2"),  
    new XElement("Child3", "Value3"),  
    new XElement("Child4", "Value4")  
);  

Dictionary<string, string> dict = new Dictionary<string, string>();  
foreach (XElement el in root.Elements())  
    dict.Add(el.Name.LocalName, el.Value);  
foreach (string str in dict.Keys)  
    Console.WriteLine("{0}:{1}", str, dict[str]);  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

Child1:Value1  
Child2:Value2  
Child3:Value3  
Child4:Value4  

Siehe auchSee Also

Projektionen und Transformationen (LINQ to XML) (C#)Projections and Transformations (LINQ to XML) (C#)