public async Task <DateTime> LoadLatest(string endPoint, SelectedMealCollection mealData, SelectedIngredientsCollection ingredientsData) { DateTime startDate = DateTime.MinValue; try { string data = await ServerGet(endPoint); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(data); var meals = xmlDoc.SelectNodes("//ArrayOfSelectedMeal/SelectedMeal"); mealData.Clear(); foreach (XmlNode xmlNode in meals) { // <ArrayOfSelectedMeal> // Now populate meals and staples string date = xmlNode.SelectSingleNode("DateTime").InnerText; var ingredients = xmlNode.SelectNodes("Ingredients/string"); var mealsForDate = xmlNode.SelectNodes("Meals/string"); var selectedMeal = new SelectedMeal(); // Datetime conversion DateTime mealDate; if (DateTime.TryParse(date, out mealDate)) { selectedMeal.DateTime = mealDate; if (startDate == DateTime.MinValue || mealDate < startDate) { startDate = mealDate; } } foreach (XmlNode mealNode in mealsForDate) { selectedMeal.addMeal(mealNode.InnerText); } foreach (XmlNode ingredientNode in ingredients) { selectedMeal.Ingredients.Add(ingredientNode.InnerText); } mealData.Add(selectedMeal); } //<ArrayOfSelectedIngredient> var selectedIngredients = xmlDoc.SelectNodes("//ArrayOfSelectedIngredient/SelectedIngredient"); ingredientsData.Clear(); foreach (XmlNode xmlNode in selectedIngredients) { string ingredient = xmlNode.SelectSingleNode("Ingredient").InnerText; string date = xmlNode.SelectSingleNode("DateToUse").InnerText; var selectedIngredient = new SelectedIngredient(); selectedIngredient.Ingredient = ingredient; selectedIngredient.DateToUse = date; ingredientsData.Add(selectedIngredient); } } catch (Exception ex) { MessageBox.Show("Unable to load data from server: " + ex.Message, "Failed Load", MessageBoxButton.OK, MessageBoxImage.Error); } return(startDate); }