Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Często wygodne jest konwertowanie struktur danych różnych rodzajów na format XML, a następnie z xml do innych struktur danych. W tym artykule przedstawiono konwersję elementu Dictionary<TKey,TValue> na XML i z powrotem.
Przykład: tworzenie słownika i konwertowanie jego zawartości na kod XML
Ten pierwszy przykład tworzy obiekt Dictionary<TKey,TValue>, a następnie konwertuje go na plik XML.
Ta wersja przykładu w języku C# używa formy konstrukcji funkcjonalnej, w której zapytanie projektuje nowe XElement obiekty, a wynikowa kolekcja jest przekazywana jako argument do konstruktora obiektu Root XElement .
Wersja języka Visual Basic używa literałów XML i zapytania w wyrażeniu osadzonym. Zapytanie projektuje nowe XElement obiekty, które następnie stają się nową zawartością RootXElement obiektu.
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)
Ten przykład generuje następujące wyniki:
<Root>
<Child1>Value1</Child1>
<Child2>Value2</Child2>
<Child3>Value3</Child3>
<Child4>Value4</Child4>
</Root>
Przykład: tworzenie słownika i ładowanie go z danych XML
W następnym przykładzie tworzony jest słownik, który ładuje go z danych 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]);
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
Ten przykład generuje następujące wyniki:
Child1:Value1
Child2:Value2
Child3:Value3
Child4:Value4