The difference with previous example is that XML namespace is now in use:
<Configuration xmlns="http://schemas.vurdalakov.net/linqtest">
<UserSettings>
<UserSetting Name="UsePlugins" Value="True" />
</UserSettings>
<Plugins>
<Plugin Name="BackgroundWorker" />
<Plugin Name="UserInteraction" />
</Plugins>
</Configuration>
Plugin information is read into list of the following class:public class Plugin
{
public String Name { get; set; }
}
And the required code is (changes in red color):namespace LinqTest
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
static public class ParseXml
{
static public List<Plugin> Example2(String fileName)
{
XDocument document = XDocument.Load(fileName);
XNamespace ns = document.Root.Name.Namespace;
List<Plugin> plugins = new List<Plugin>(from plugin in document.Descendants(ns + "Plugin")
select new Plugin
{
Name = (String)plugin.Attribute("Name")
});
return plugins;
}
}
}
All blog entries related to "Parse XML file with Linq":
- Parse XML file with Linq, part 1: Simple case
- Parse XML file with Linq, part 2: Adding namespaces
- Parse XML file with Linq, part 3: Complex structures
- Parse XML file with Linq, part 4: Filtering
- Source code of the whole test project
No comments:
Post a Comment