Så här arbetar du med ordlistor med LINQ till XML
Det är ofta praktiskt att konvertera datastrukturer av olika slag till XML och sedan från XML till andra datastrukturer. Den här artikeln visar en konvertering av en Dictionary<TKey,TValue> till XML och tillbaka.
Exempel: Skapa en ordlista och konvertera dess innehåll till XML
Det första exemplet skapar en Dictionary<TKey,TValue>och konverterar den sedan till XML.
Den här C#-versionen av exemplet använder en form av funktionell konstruktion där en fråga projicerar nya XElement objekt, och den resulterande samlingen skickas som ett argument till konstruktorn för rotobjektet XElement .
Visual Basic-versionen använder XML-literaler och en fråga i ett inbäddat uttryck. Frågan projicerar nya XElement objekt som sedan blir det nya innehållet för Root
XElement objektet.
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);
Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)()
dict.Add("Child1", "Value1")
dict.Add("Child2", "Value2")
dict.Add("Child3", "Value3")
dict.Add("Child4", "Value4")
Dim root As XElement = _
<Root>
<%= From keyValue In dict _
Select New XElement(keyValue.Key, keyValue.Value) %>
</Root>
Console.WriteLine(root)
Det här exemplet genererar följande utdata:
<Root>
<Child1>Value1</Child1>
<Child2>Value2</Child2>
<Child3>Value3</Child3>
<Child4>Value4</Child4>
</Root>
Exempel: Skapa en ordlista och läs in den från XML-data
I nästa exempel skapas en ordlista som läser in den från XML-data.
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]);
Dim root As XElement = _
<Root>
<Child1>Value1</Child1>
<Child2>Value2</Child2>
<Child3>Value3</Child3>
<Child4>Value4</Child4>
</Root>
Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)
For Each el As XElement In root.Elements
dict.Add(el.Name.LocalName, el.Value)
Next
For Each str As String In dict.Keys
Console.WriteLine("{0}:{1}", str, dict(str))
Next
Det här exemplet genererar följande utdata:
Child1:Value1
Child2:Value2
Child3:Value3
Child4:Value4
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för