C# 对象引用未设置为对象的实例。尝试将XML放入列表中

C# 对象引用未设置为对象的实例。尝试将XML放入列表中,c#,xml,linq-to-xml,xelement,C#,Xml,Linq To Xml,Xelement,我必须将以下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<KeyVa

我必须将以下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字符串

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

有人能帮我吗?提前谢谢

而不是Elementroot。元素只使用aValues.substands。在本例中,aValues已经是您的根元素。您正在根元素中查找根元素,因此它返回null。顺便说一句,你可以用字典代替列表

而不是Elementroot.Elements只使用aValues.Degenerations。在本例中,aValues已经是您的根元素。您正在根元素中查找根元素,因此它返回null。顺便说一句,你可以用字典代替列表

root是您的aValues元素。所以,在aValue的子元素中没有根元素,aValue.Elementroot会为空

正确的查询:

 aValue.Elements()
       .Select(e => new KeyValuePair<string, object>(e.Name.LocalName, e.Value))
       .ToList();
root是您的aValues元素。所以,在aValue的子元素中没有根元素,aValue.Elementroot会为空

正确的查询:

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

您的一个对象为空。使用调试器查看异常位于哪一行,然后检查每个值是否为null其中一个对象为null。使用调试器查看异常所在的行,然后检查每个值是否为null