gpt4 book ai didi

c# - 使用LINQ将XML解析成Dictionary

转载 作者:太空狗 更新时间:2023-10-30 00:06:14 26 4
gpt4 key购买 nike

我有一个配置文件,例如:

<ConfigurationFile>
<Config name="some.configuration.setting" value="some.configuration.value"/>
<Config name="some.configuration.setting2" value="some.configuration.value2"/>
...
</ConfigurationFile>

我正在尝试将其读取为 XML 并将其转换为字典。我尝试编写一些这样的代码,但这显然是错误的,因为它无法编译。

Dictionary<string, string> configDictionary = (from configDatum in xmlDocument.Descendants("Config")
select new
{
Name = configDatum.Attribute("name").Value,
Value = configDatum.Attribute("value").Value,
}).ToDictionary<string, string>(Something shoudl go here...?);

如果有人能告诉我如何让它工作,那将非常有帮助。当然,我总是可以阅读它

最佳答案

要给出更详细的答案 - 您可以完全按照您在问题中所写的那样使用 ToDictionary。在缺少的部分,您需要指定“键选择器”和“值选择器”,这两个函数告诉 ToDictionary 方法您要转换的对象的哪个部分是键,哪个是键一个值。您已经将这两个提取为匿名类型,因此您可以这样写:

var configDictionary = 
(from configDatum in xmlDocument.Descendants("Config")
select new {
Name = configDatum.Attribute("name").Value,
Value = configDatum.Attribute("value").Value,
}).ToDictionary(o => o.Name, o => o.Value);

请注意,我删除了通用类型参数规范。 C# 编译器会自动计算(我们使用的是 overload with three generic arguments )。但是,您可以避免使用匿名类型——在上面的版本中,您只是创建它来临时存储值。最简单的版本就是:

var configDictionary = 
xmlDocument.Descendants("Config").ToDictionary(
datum => datum.Attribute("name").Value,
datum => datum.Attribute("value").Value );

关于c# - 使用LINQ将XML解析成Dictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800444/

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