XML Root Element Parsing

I am parsing an xml file using the following which works well but my question is how do I get the value from the tag <themename> because I am using oXmlNodeList for my loop. Just don't want to be writing a separate routine for one tag.

XmlDocument xDoc = new XmlDocument();


List<active_theme> listActiveTheme = new List<active_theme>();
string path = AppDomain.CurrentDomain.BaseDirectory + @"themes\test\configuration.xml";
xDoc.Load(AppDomain.CurrentDomain.BaseDirectory + @"themes\test\configuration.xml");

//select a list of Nodes matching xpath expression
XmlNodeList oXmlNodeList = xDoc.SelectNodes("configuration/masterpages/masterpage");
Guid newGuid = Guid.NewGuid();

foreach (XmlNode x in oXmlNodeList)
{

    active_theme activetheme = new active_theme();
    string themepage = x.Attributes["page"].Value;
    string masterpage = x.Attributes["name"].Value;
    activetheme.active_theme_id = newGuid;
    activetheme.theme = "Dark";
    activetheme.page = themepage;
    portalContext.AddToActiveTheme(activetheme);
}
portalContext.SaveChanges();

XML File for theme configuration

<configuration>
  <themename>Dark Theme</themename>

  <masterpages>
    <masterpage page="Contact" name="default.master"></masterpage>
    <masterpage page="Default" name="default.master"></masterpage>
    <masterpage page="Blue" name="blue.master"></masterpage>
    <masterpage page="red" name="red.master"></masterpage>
  </masterpages>
</configuration>
Jon Skeet
people
quotationmark

I'd use LINQ to XML to start with. Something like this:

var doc = XDocument.Load(...);
var themeName = doc.Root.Element("themename").Value;
Guid themeGuid = Guid.NewGuid();
foreach (var element in doc.Root.Element("masterpages").Elements("masterpage"))
{
    ActiveTheme theme = new ActiveTheme
    {
        ThemeName = themeName,
        ActiveThemeId = themeGuid,
        Page = element.Attribute("page").Value,
        MasterPage = element.Attribute("name").Value
    };
    portalContent.AddToActiveTheme(theme);
}
portalContext.SaveChanges();

people

See more on this question at Stackoverflow