Question

I have to following XML code witch I like to convert into a List with keys and values:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<root>
<command>getClient</command>
<id>10292</id>
</root>

My C# code is like this:

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 is the XML string.

Now I'm getting the following error, and I can not figure out why: "Object reference not set to an instance of an object."

Can someone please help me? Thanks in advance!

Was it helpful?

Solution

"root" is your aValues element. So, there is no "root" elements in children of aValue, and aValues.Element("root") gives you null.

Correct query:

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

OTHER TIPS

Instead of Element("root").Elements() just use aValues.Descendants().In this case aValues is already your root element.You are looking for root inside of root so it returns null. BTW, you can use a Dictionary instead of List<KeyValuePair<string, object>>

var oValues = aValues.Descendants()
            .ToDictionary(x => x.Name, x => (object) x);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top