Один из способов - проанализировать ваш XML с помощью XDocument
.
Здесь я создал пользовательскую функцию GetUserData
. Вам нужно передать username
как David
этой функции, и тогда эта функция может вернуть вам список названий продуктов и список названий напитков.
Консольное приложение для демонстрационных целей.
class Program
{
static void Main(string[] args)
{
XDocument doc = XDocument.Load(@"Your path to xml"); //<= Load xml
FoodData foodData = GetUserData(doc, "David"); //<= Pass "David" to function
foodData.FoodNames.ForEach(x => Console.WriteLine("Food: " + x)); //<= Print food name list
Console.WriteLine();
foodData.DrinkNames.ForEach(x => Console.WriteLine("Drink: " + x)); //<= Print drink name list
Console.ReadLine();
}
public static FoodData GetUserData(XDocument doc, string userName)
{
var data = doc.Root.Elements(userName).Elements();
FoodData foodData = new FoodData
{
FoodNames = data.Where(x => x.Name == "FAVE_FOOD").Descendants().Select(x => x.Attribute("value").Value).ToList(),
DrinkNames = data.Where(x => x.Name == "FAVE_Drinks").Descendants().Select(x => x.Attribute("value").Value).ToList()
};
return foodData;
}
}
public class FoodData
{
public List<string> FoodNames { get; set; }
public List<string> DrinkNames { get; set; }
}
Выход:

Edit:
Если вы хотите собрать все продукты питания и напитки в один список (не разделяйте его на список продуктов и список напитков).
Затем просто соберите все данные о еде и напитках в один список и верните этот список как
public static List<string> GetUserData(XDocument doc, string userName)
{
List<string> data = doc.Root.Elements(userName).Elements().Elements().Select(x => x.Attribute("value").Value).ToList();
return data;
}
И вы можете вызвать метод выше, как.
List<string> data = GetUserData(doc, "David");