FWIW, вот запрос LINQ, который превратит этот XML-документ в набор объектов:
var coll = from XElement c in doc.Descendants("Data")
select new {
Name = c.Element("Name").Value,
Age = int.Parse(c.Element("Age").Value)
};
Но я думаю, что вы действительно ищете способ привязки XML-документа к DataGrid напрямую. Один из способов сделать это - привязать вашу DataGrid к DataTable и использовать ее методы WriteXml / ReadXml для чтения / записи файла.
При предварительном просмотре ... Я пропустил требование, что структура входящего XML неизвестна. Вы можете создать коллекцию коллекций объектов, не зная структуры блоков данных, используя этот LINQ:
var coll = from XElement c in loaded.Descendants("Data")
select (from XElement d in c.Elements() select d.Value);
Или вы можете создать CSV с помощью этого:
string csv = string.Join(Environment.NewLine,
( from XElement c in loaded.Descendants("Data")
select string.Join(",",
(from XElement d in c.Elements() select d.Value).ToArray())
).ToArray());