【问题标题】:External Key Value Pair Data To Dictionary C#外部键值对数据到字典 C#
【发布时间】:2013-06-12 12:12:12
【问题描述】:

我有一个将信息保存为key-value pair(比如文件,通常是xml)的外部资源,我想将此信息作为Dictionary<Key,Value>(泛型)加载到应用程序中。我正在寻找任何序列化-反序列化机制或任何其他更好的方法来做到这一点而没有任何开销。

外部资源示例如下,

  Id         Value

  in         India

  us         United States

  fr         France

【问题讨论】:

  • 有什么问题?是否将 xml 解析成对?
  • 我尝试通过添加在外部流之间工作的自定义结构,发现这是一种开销。因为从外部读取,设置为自定义类,然后制作字典......
  • @omerschleifer 完全正确

标签: c# generics serialization dictionary


【解决方案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);
}

【讨论】:

    【解决方案2】:

    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");
    

    【讨论】:

    • 请再次检查我的问题,我的键值对是外部的,每次运行都可能更改...这个硬编码的解决方案不适用于此
    【解决方案3】:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2013-11-15
      • 2011-07-17
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多