我必须遵循XML代码,我想将其转换为带有键和值的List:
<?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字符串。
现在我收到以下错误,我无法弄清楚原因: &#34;对象引用未设置为对象的实例。&#34;
有人可以帮帮我吗?提前谢谢!
答案 0 :(得分:3)
"root"
是您的aValues
元素。因此,"root"
的子项中没有aValue
个元素,而aValues.Element("root")
会为您提供null
。
正确查询:
aValue.Elements()
.Select(e => new KeyValuePair<string, object>(e.Name.LocalName, e.Value))
.ToList();
答案 1 :(得分:1)
而不是Element("root").Elements()
只使用aValues.Descendants()
。在这种情况下,aValues
已经是您的根元素。您正在root
内寻找root
所以它返回null
。顺便说一句,您可以使用Dictionary
代替List<KeyValuePair<string, object>>
var oValues = aValues.Descendants()
.ToDictionary(x => x.Name, x => (object) x);