not sure how to use XmlNode in C#

c#, xml, xmldocument, xmlnode

Solution

You can use LINQ to XML (which is preferable in latest .Net versions)

var xdoc = XDocument.Load(fileManager.ConfigFile);
var serverConfig = xdoc.Root;
string version = (string)serverConfig.Attribute("version");
DateTime date = (DateTime)serverConfig.Attribute("createDate");
string type = (string)serverConfig.Attribute("type");

var items = from item in serverConfig.Element("items").Elements()
            select new {
                Name = (string)item.Attribute("name"),
                Type = (string)item.Attribute("type"),
                Source = (string)item.Attribute("source"),
                Destination = (string)item.Attribute("destination")
            };

Take a look - few lines of code and file parsed into strongly-typed variables. Even date is a `DateTime` object instead of string. And items are collection of anonymous objects with properties corresponding to xml attributes.

Problem

In C# I need to use XmlNode to get values from these attributes as follows: Root element (ServerConfig): type version createDate Child nodes (Items): name source destination XML: ``` <?xml version="1.0" encoding="utf-8"?> <ServerConfig type="ProjectName" version ="1.1.1.2" createDate ="2013-07-30T15:07:19.3859287+02:00" > <items> <item name="fs" type="directory" source="C:\temp\source" destination="C:\temp\target" action="Create" /> <item name="testdoc.txt" type="file" source="C:\temp\source" destination="C:\temp\target" action="Update" /> </items> </ServerConfig> ``` C#: ``` XmlTextReader reader = new XmlTextReader(fileManager.ConfigFile); XmlDocument doc = new XmlDocument(); XmlNode node = doc.ReadNode(reader); // failed to get values here var Version = node.Attributes["version"].Value; var Type = node.Attributes["type"].Value; var Date = node.Attributes["createDate"].Value; //how to get values from items/item attributes here? ``` Your example code much appreciated thanks :)

Original source