gpt4 book ai didi

c# - Linq to XML - 将节点解析为字典

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:47 25 4
gpt4 key购买 nike

我自己想不通。我的 XML 文件如下所示:

<section name="blah">
<setting1 name="blah">blah</setting1>
<setting1 name="blah1">blah1</setting1>
</section>

<section name="foo">
<setting2 name="sth">sth</setting2>
<setting2 name="sth1">lala</setting2>
</section>

等等。

我想做的是将每个部分解析成它自己的单独字典,如下所示:

Dictionary <string, string> foo;
Dictionary <string, string> blah;

XElement xelement = XElement.Load("test.xml");
IEnumerable<XElement> sections = xelement.Elements();
foreach (var section in sections)
{
switch (section.Attribute("name").Value)
{
case "foo":
foo = ... Something
break;

case "blah":
blah = ... Something
break;
}
}

等等。

解析后:

foo["sth1"] <---- contains lala
blah["blah1"] <---- contains blah1

如何在 Linq 中实现这一点?

最佳答案

虽然您可以将名称硬编码为变量,但我怀疑您最好使用 Dictionary<string, Dictionary<string, string>> :

var settings = element.Elements("section")
.ToDictionary(section => section.Attribute("name").Value,
section => section.Elements()
.ToDictionary(setting => setting.Attribute("name)".Value,
setting => setting.Value));

Console.WriteLine(settings["foo"]["sth1"]); // lala

这使用了对 ToDictionary 的嵌套调用,您可以在其中指定给定任何特定项目的键和值。外部字典的每个元素的值本身就是一个字典,由该部分中的元素创建。

关于c# - Linq to XML - 将节点解析为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20772959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com