未设置为对象实例的对象引用.尝试将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字符串。
现在我得到以下错误,我不知道为什么:"对象引用未设置为对象的实例。"
有人能帮帮我吗?提前感谢!
"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);