nikotromus
nikotromus

Reputation: 1074

Failing to read value XML attribute in C#

I am trying to read a file produced by another developer. The file looks something like this. I am trying to read in the value for 'ProfileName', but when I look at the object in memory, I see null for the Value (capital V) attribute. The only place I can see the string "GolfLeague-Dual" is in the outerxml attribute, but I would have to parse through a bunch of just to get it.

<?xml version="1.0"?>
<TopNode>
  <ProfileSettings>
    <ProfileName value="GolfLeague-Dual" />    
  </ProfileSettings>
</TopNode>

Here is my code to try to read this:

XmlDocument doc = new XmlDocument();
doc.Load(directory + @"\Settings.xml");

XmlElement root = doc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("//ProfileSettings");

foreach (XmlNode node in nodes) {
    Console.WriteLine(node["ProfileName"].Value);
}

Upvotes: 2

Views: 193

Answers (1)

Reinstate Monica Cellio
Reinstate Monica Cellio

Reputation: 26143

Your code is trying to get the inner value of the node, not an attribute called value. Try this instead...

foreach (XmlNode node in nodes) {
    Console.WriteLine(node["ProfileName"].Attributes["value"].Value);
}

Here's a working dotnetfiddle...

https://dotnetfiddle.net/pmJKbX

Upvotes: 4

Related Questions