我正在使用recipe API構建Windows Phone 8應用程序,API以XML形式返回數據,至此我沒有解析API響應的許多問題,但是在製作完成後搜索配方,然後用戶應能夠點擊特定的搜索結果並查看該配方的更多信息,這是一個帶三個標頭的透視頁面:在C中解析XML的問題#
- 詳細信息(其中包含配方名稱,圖片和說明)
- 成分(很明顯,組分和數量列表)
- 說明(包含準備和烹飪說明)
我沒有問題,得到的詳細信息和說明頁面中的元素,因爲只有每一個由API返回的XML這些元素中的一個,但是與成分,每種成分已在自己的段xml,所以我認爲代碼中的foreach循環能夠將所有的細節放入列表中,但是,當運行應用程序並導航到此頁面時,應用程序似乎會加載所有信息的倍數,包括詳情和說明頁面。
因此,現在有許多相同的圖像,標題和解密顯示在詳細信息頁面上,在說明頁面上有很多相同的說明以及成分頁面上有大量相同的成分。我不太清楚如何解決這個問題,因爲我嘗試的所有東西都不起作用。
從下面的代碼中刪除foreach循環會阻止應用程序加載相同信息的負載,但顯然沒有任何成分,請參閱下面的代碼,我無法發佈API鏈接,因爲對於我可以每小時製作很多請求,並在此處插入它以不明確的方式進行格式化,有誰知道有任何步驟可以嘗試解決此問題嗎?
代碼:
void bigOvenRecipe_RecipeDetailsCompleted(object sender, DownloadStringCompletedEventArgs e)
{
var xdoc = XDocument.Parse(e.Result);
Details content = new Details();
List<Details> contentList = new List<Details>();
try
{
content.RecipeImage = xdoc.Root.Element("ImageURL").Value;
content.Title = xdoc.Root.Element("Title").Value;
content.Description = xdoc.Root.Element("Description").Value;
content.Instructions = xdoc.Root.Element("Instructions").Value;
contentList.Add(content);
foreach (XElement item in xdoc.Elements("Recipe").Elements("Ingredients").Elements("Ingredient"))
{
content.IngredientName = item.Element("Name").Value;
content.IngredientQuantity = item.Element("Quantity").Value;
content.IngredientUnit = item.Element("Unit").Value;
contentList.Add(content);
}
}
catch (Exception error)
{
MessageBox.Show("An error was encountered while performing this request: " + error.Message);
}
detailsList.ItemsSource = contentList.ToList();
ingredientsList.ItemsSource = contentList.ToList();
instructionsList.ItemsSource = contentList.ToList();
}
預先感謝您!
您能否提供輸入XML以便我們擁有SSCCCE? http://sscce.org/ –