解析XML并将其添加为键值对

时间:2014-02-26 10:23:34

标签: c# wpf windows-phone-8 xml-parsing windows-phone

我有这样的文件:

<dict>
<key> 1</key>
<string>AAA</string>
<key> 2</key>
<string>BBB</string>
<key> 3</key>
<string>CCC</string>
<key> 4</key>
<string>DDD</string>
</dict>

我正在解析这个:

Dictionary<string, string> dict = doc.Root.Elements("dict")
                   .ToDictionary(c => (string)c.Element("key"),
                                 c => (string)c.Element("string"));

            foreach (KeyValuePair<string, string> item in dict)
            {
                Debug.WriteLine("Key and Valkue is ", item.Key, item.Value);
            }

但它不打印值,如果用户将密钥作为第1行传递,我需要获取相应的值吗?

在Java中我们使用hashMap来实现这一点,我是c#的新手,如何实现这一目标?我在这做错了什么?

1 个答案:

答案 0 :(得分:1)

var xmlDict = XDocument.Load(filename).Root.Element("dict");
var dict = xmlDict.Elements("key")
           .Zip(xmlDict.Elements("string"), (k, s) => new KeyValuePair<string, string>(k.Value, s.Value))
           .ToDictionary(x=>x.Key,x=>x.Value);

PS:不要忘记,正如我在评论中所说,你不应该依赖于元素的顺序