2012-03-10 64 views
-1

我想讀取一點XML,並且想使用下面的代碼閱讀它,因爲這是一個地鐵Windows 8應用程序。我可以使用一些幫助,但如何解析每個節點/元素等。謝謝!使用XmlDocument.LoadFromUriAsync(UrlString)讀取XML?

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Uri UrlString = new Uri("http://v1.sidebuy.com/api/get/73d296a50d3b824ca08a8b27168f3b85/?city=nashville&format=xml"); 
    var xmlDocument = XmlDocument.LoadFromUriAsync(UrlString); 

    text1.Text = xmlDocument.ToString(); 
} 
+0

我們很樂意幫助你,但我們需要知道你到底在做什麼。您想做什麼?你有什麼嘗試?它是如何失敗的? – svick 2012-03-10 21:38:09

+0

說實話。我只想創建一個簡單的程序來顯示xml提要。但我對xaml完全陌生。我認爲這將很容易開始。我被告知我應該使用上述來解析我想要使用的XML。這篇文章得到了我原來的問題在這篇文章http://stackoverflow.com/questions/9477158/metro-application-how-to-read-xml-api/9485522#comment12253186_9485522 – allencoded 2012-03-10 21:42:19

回答

4

很難判斷您是否被XML部分或異步部分困惑。你根本不會自己解析 - XmlDocument這樣做(儘管如果可以的話,我建議使用LINQ to XML)。但是,您的變量名稱和ToString調用建議您不知道LoadFromUriAsync返回IAsyncOperation<XmlDocument>,而不是XmlDocument

實際上,它代表了在未來的某個時間點可以使用XmlDocument的承諾。這就是C#5的異步方法來發揮作用......如果你改變Button_Click成異步方法,你可以寫:

private async void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Uri uri = new Uri("..."); 
    XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(UrlString); 
    text1.Text = xmlDocument.ToString(); 
} 

現在你的方法實際上將給調用者(的UI事件循環)時它會等待表達式,假設文檔沒有立即可用......但是當文檔被提取時,你的方法的其餘部分將會執行(返回到UI線程),並且你將得到文檔你可以像使用同步提取一樣使用它。

+0

哦謝謝你的信息!現在我有點失落......但是你所說的至少讓我走上了一條更好的軌道。 – allencoded 2012-03-10 21:28:27

+0

@allencoded:異步是一個很大的話題...我強烈建議潛入到博客和MSDN :) – 2012-03-10 21:31:32

+0

謝謝,順便說一下,我被告知上面的代碼是解析XML的新的地鐵應用程序的最佳方式繞xaml。 XAML對我來說是新的。我真的想創建一個簡單的程序來列出區域內的最暢銷產品,以瞭解更多信息。但迄今爲止,這一直是頭痛的問題。 – allencoded 2012-03-10 21:40:36