2013-06-12 74 views
-2

我有一個外部資源,保存信息爲key-value pair(說文件,通常是一個XML),我想加載這個信息到應用程序作爲Dictionary<Key,Value>(泛型)。我正在尋找任何序列化 - 反序列化機制或任何其他更好的方法來做到這一點,而無需任何開銷。外鍵值對數據字典C#

樣的外部資源將是如下,

Id   Value 

    in   India 

    us   United States 

    fr   France 
+0

是什麼問題?它解析XML成對? –

+0

我嘗試通過添加自定義結構,在外部流之間工作,發現它是一個開銷。因爲從外部閱讀,設置爲自定義類,然後製作詞典... –

+0

@omerschleifer完全是 –

回答

1

(say file, typically an xml)

假設你XML作爲

<root> 
    <key>value</key> 
</root> 

代碼將其轉換爲字典

XElement rootElement = XElement.Parse("<root><key>value</key></root>"); 
Dictionary<string, string> dictionary= new Dictionary<string, string>(); 
foreach(var el in rootElement.Elements()) 
{ 
    dictionary.Add(el.Name.LocalName, el.Value); 
} 
+0

這一個似乎更好..讓我等待其他答案.. –

1

string string字典應該做的伎倆。

// read from XML or some place  

var dictionary = new Dictionary<string, string>(); 

dictionary.Add("in", "India"); 
dictionary.Add("us", "United States"); 
dictionary.Add("fr", "France"); 
+0

請再次檢查我的問題,我的鍵值對是外部的,可能會改變每次運行......這個硬編碼的解決方案不工作與此 –

1

XML

<Loc> 
<Id>in</Id> 
<Value>India</Value> 
</Loc> 

C#

Dictionary<string,string> map = new Dictionary<string,string>(); 

XElement xe = XElement.Load("file.xml"); 

var q = from data in xe.Descendants("Loc") 
     select data; 

foreach (var data in q) 
{ 
    map.Add(data.Element("Id").Value,data.Element("Value").Value); 
}