Bagikan melalui


Cara bekerja dengan kamus menggunakan LINQ ke XML

Seringkali lebih mudah untuk mengonversi struktur data dari berbagai jenis ke XML, dan kemudian dari XML ke struktur data lainnya. Artikel ini menunjukkan konversi Dictionary<TKey,TValue> ke XML dan sebaliknya.

Contoh: Buat Kamus dan ubah isinya menjadi XML

Contoh pertama ini membuat Dictionary<TKey,TValue>, lalu mengonversinya menjadi XML.

Versi C# dari contoh ini menggunakan bentuk konstruksi fungsional di mana kueri memproyeksikan objek XElement baru, dan koleksi yang dihasilkan diteruskan sebagai argumen ke konstruktor objek Root XElement.

Versi Visual Basic menggunakan literal XML dan kueri dalam ekspresi yang disematkan. Kueri memproyeksikan objek baru XElement yang kemudian menjadi konten baru untuk objek tersebut Root XElement .

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)

Contoh ini menghasilkan output berikut:

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

Contoh: Buat kamus dan muat dari data XML

Contoh berikutnya membuat kamus memuatnya dari data 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

Contoh ini menghasilkan output berikut:

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

Lihat juga