Aracılığıyla paylaş


LINQ to XML kullanarak sözlüklerle çalışma

Genellikle çeşitli türlerdeki veri yapılarını XML'ye ve ardından XML'den diğer veri yapılarına dönüştürmek uygundur. Bu makalede, xml Dictionary<TKey,TValue> ve geri dönüştürme gösterilmektedir.

Örnek: Sözlük oluşturma ve içeriğini XML'ye dönüştürme

Bu ilk örnek bir Dictionary<TKey,TValue>oluşturur ve ardından XML'ye dönüştürür.

Örneğin bu C# sürümü, sorgunun yeni XElement nesneleri projelendirdiği ve sonuçta elde edilen koleksiyonun Root XElement nesnesinin oluşturucusunun bağımsız değişkeni olarak geçirildiği işlevsel bir yapı biçimi kullanır.

Visual Basic sürümü, eklenmiş ifadede XML değişmez değerlerini ve sorguyu kullanır. Sorgu, nesnenin yeni içeriği Root XElement haline gelen yeni XElement nesneleri yansıtır.

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)

Bu örnek aşağıdaki çıkışı oluşturur:

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

Örnek: Bir sözlük oluşturma ve XML verilerinden yükleme

Sonraki örnek, xml verilerinden bir sözlük yükler oluşturur.

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

Bu örnek aşağıdaki çıkışı oluşturur:

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

Ayrıca bkz.