我有这样的文件:
<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#的新手,如何实现这一目标?我在这做错了什么?
答案 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:不要忘记,正如我在评论中所说,你不应该依赖于元素的顺序