2013-07-15 57 views
0

我有一个静态字典,我需要在我的程序中使用它。我已经将它加载到字典中,我想知道如何以及在哪里存储它,以便稍后以最简单的方式访问它的值。在哪里存储我的字典

我想知道如何使用键值对创建xml文件,但我不知道如何保存它并将其格式化,所以稍后我可以调用它来调用我的appSettings键和值(使用LINQ)。

我只需要将它存储在某个地方,作为资源,为什么不呢,每次我需要一个特定的密钥值时,只需要一行代码就可以获得它的值。

+0

这可能帮助:http://stackoverflow.com/a/1799792/1303986 – computer10171

+0

这也应该帮助你:http://stackoverflow.com/a/1710942/1303986 – computer10171

+0

这是great.BUt我怎么可以从现在开始使用它吗?我想将它存储在我的项目的某个地方,并随时随地访问它? – user2128702

回答

0

您可以使用LINQ2XML创建两种写入和读取Dictionary对象的方法。

存放词典(延伸,用于你的类型/改变)到一个文件:从文件

private void storeXml(string location, Dictionary<int, string> data) 
{ 
    var xml = new XElement("storage", 
        data.Select(kv => new XElement("entry", 
           new XElement("key", kv.Key), 
           new XElement("value", kv.Value)))); 
    xml.Save(location); 
} 

读数据和填充字典对象:

private Dictionary<int, string> readXml(string location) 
{ 
    var data = new Dictionary<int, string>(); 

    var xml = XDocument.Load(location); 
    foreach(var element in xml.Descendants("entry").ToList()) 
    { 
     var key = int.Parse(element.Element("key").Value); 
     var value = element.Element("value").Value; 
     data.Add(key, value); 
    } 

    return data; 
} 

该代码可用于像这样的:

var data = new Dictionary<int, string>(); 
data.Add(1, "one"); 
data.Add(2, "two"); 
data.Add(3, "three"); 
data.Add(4, "four"); 

var fileLocation = @"d:\temp\dictionary.xml"; 

storeXml(fileLocation, data); 

var d = readXml(fileLocation); 

的XML文件是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<storage> 
    <entry> 
     <key>1</key> 
     <value>one</value> 
    </entry> 
    <entry> 
     <key>2</key> 
     <value>two</value> 
    </entry> 
    <entry> 
     <key>3</key> 
     <value>three</value> 
    </entry> 
    <entry> 
     <key>4</key> 
     <value>four</value> 
    </entry> 
</storage>