0

私は自分のプログラムで使用する必要がある静的辞書を持っています。それを辞書にロードしましたが、後で可能な限り簡単な方法でその値にアクセスできるように、それをどこにどのように保存するのか疑問に思っていました。

キーと値のペアを使用してxmlファイルを作成することを考えていましたが、保存してフォーマットする方法が正確にわからないので、後でappSettingsのキーと値を呼び出す方法で呼び出すことができます(LINQを使用) .

リソースとしてどこかに保存する必要があるだけで、キーの特定の値が必要になるたびに、その値を取得するのに1行のコードしかかかりません。

4

1 に答える 1

0

LINQ2XML を使用して、Dictionary オブジェクトを読み書きするための 2 つのメソッドを作成できます。

ディクショナリをファイルに保存する(タイプの拡張/変更):

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>
于 2013-07-15T17:53:01.330 に答える