将 XML 转换为 Dictionary<String,String>

Posted

技术标签:

【中文标题】将 XML 转换为 Dictionary<String,String>【英文标题】:Convert XML to Dictionary<String,String> 【发布时间】:2021-05-19 04:37:00 【问题描述】:

我一直在尝试将此 XML 转换为字典,但出现了各种错误。这是我的 XML

<product>
        <name>AH</name>
        <prod>AH</prod>
        <time>Noon</time>
        <txt>00A</txt>
</product>

我正在尝试获取一个字典,其键等于 txt,值等于 prod。 我一直在尝试这个,但无法成功:

Dictionary<string, string> result = 
        (from e in productsNames.Descendants() select new KeyValuePair<string, string>
        (e.Element("txt").Value, e.Element("prod").Value)).ToDictionary(x => x.Key, x =>x.Value);

你能帮帮我吗?提前致谢!

【问题讨论】:

image, facade?您是否发布了正确的 xml? 哎呀抱歉刚刚编辑了代码! 这是怎么失败的?例外?编译器错误?出乎意料的结果? 得到这个:NullReferenceException:对象引用未设置为对象的实例 这能回答你的问题吗? What is a NullReferenceException, and how do I fix it? 【参考方案1】:

简单:

            string xml = @"<product>
                                    <name>AH</name>
                                    <prod>AH</prod>
                                    <time>Noon</time>
                                    <txt>00A</txt>
                            </product>";

            XDocument doc = XDocument.Parse(xml);

            Dictionary<string, string> dict = doc.Descendants("product")
                .GroupBy(x => (string)x.Element("name"), y => (string)y.Element("prod"))
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

【讨论】:

以上是关于将 XML 转换为 Dictionary<String,String>的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Dictionary<XElement,XElement> 转换为 xml 文件?

如何将对象转换为Dictionary 在C#?

无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“System.Collections.Generic.Dictionary`2[System.String,S

将 [Dictionary<String,Any?>] 转换为 [Dictionary<String,Any!>] ?迅速 3

将 Dictionary<string, object> 转换为匿名对象?

C# 将 List<string> 转换为 Dictionary<string, string>