[c#xml具有多个到字典转换的部分

问题描述 投票:0回答:1

我有一个看起来像的配置文件

'''

 <configuration>

  <setings1>

    <a>False</a>
    <c>True</c>

  </setings1>

  <Settings2>
    <b>10</b>
  </Settings2>

</configuration>

'''

如何转换为字典(字符串,列表(字符串,字符串)),即设置为键,并将元素设置为子值

c# xml linq-to-xml
1个回答
0
投票

您可以尝试以下代码,将Root节点的子元素枚举为设置项,然后枚举每个setting元素以获得值

var document = XDocument.Parse(xml);

var dict = new Dictionary<string, List<(string key, string value)>>();
foreach (var element in document.Root.Elements())
{
    var list = new List<(string key, string value)>();
    foreach (var child in element.Elements())
    {
        list.Add((child.Name.ToString(), child.Value));
    }
    dict.Add(element.Name.ToString(), list);
}

List<T>在C#中不支持两个泛型类型参数,因此您无法声明List<string,string>

您可以使用元组列表,例如上面的示例,或者创建您自己的对象来表示键和值或使用内置KeyValuePair<TKey,TValue>

© www.soinside.com 2019 - 2024. All rights reserved.