Domanda

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!

È stato utile?

Soluzione

"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();

Altri suggerimenti

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top