未设置为对象实例的对象引用.尝试将XML放入List中

本文关键字:XML 放入 List 对象引用 设置 对象 实例 | 更新日期: 2023-09-27 17:54:12

我必须遵循XML代码,我喜欢转换成一个具有键和值的列表:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<root>
<command>getClient</command>
<id>10292</id>
</root>
我的c#代码是这样的:
XElement aValues = XElement.Parse(sMessage);
List<KeyValuePair<string, object>> oValues = aValues.Element("root").Elements().Select(e => new KeyValuePair<string, object>(e.Name.ToString(), e.Value)).ToList();

sMessage是XML字符串。

现在我得到以下错误,我不知道为什么:"对象引用未设置为对象的实例。"

有人能帮帮我吗?提前感谢!

未设置为对象实例的对象引用.尝试将XML放入List中

"root"是您的aValues元素。因此,aValue的子元素中没有"root"元素,aValues.Element("root")得到null

正确的查询:

 aValue.Elements()
       .Select(e => new KeyValuePair<string, object>(e.Name.LocalName, e.Value))
       .ToList();

aValues.Descendants()代替Element("root").Elements()。在这种情况下,aValues已经是你的根元素了。你正在寻找root里面的root,所以它返回null。顺便说一句,你可以用Dictionary代替List<KeyValuePair<string, object>>

var oValues = aValues.Descendants()
            .ToDictionary(x => x.Name, x => (object) x);