Вот демо пример, который обходит все дерево и выводит названия элементов на экран.
class Program
{
static void Main(string[] args)
{
List<XElement> elements = GetElementsFromFile(@"ConsoleApplication35.exe.config");
foreach (var item in elements)
{
Console.WriteLine(item.Name);
}
Console.ReadKey();
}
public static List<XElement> GetElementsFromFile(string p_fileName)
{
List<XElement> list = new List<XElement>();
BuildElementList(XElement.Load(p_fileName).Elements(), list);
return list;
}
private static void BuildElementList(IEnumerable<XElement> p_elements, List<XElement> p_list)
{
foreach (var item in p_elements)
{
p_list.Add(item);
var children = item.Elements();
if (children.Any())
{
BuildElementList(children, p_list);
}
}
}
}