Metro Application如何读取XML API?

好的,我正在尝试学习如何使用XAML以及如何使用Visual Studio 11 Developer Preview构建新的windows metro应用程序。

我有一个问题,虽然我不知道如何读取XML文件,就像我使用C#一样。 例如,这是我过去的做法。

private void Button_Click(object sender, RoutedEventArgs e) { string UrlString = "http://v1.sidebuy.com/api/get/73d296a50d3b824ca08a8b27168f3b85/?city=nashville&format=xml"; XmlTextReader reader = new XmlTextReader(UrlString); XmlNodeType type; while (reader.Read()) { type = reader.NodeType; if ((type == XmlNodeType.Element) && (reader.Name == "highlights")) { reader.Read(); if (reader.Value != "" && reader.Value != null) { listBox1.Items.Add(reader.Value); } } } } 

但这不适用于我的地铁应用程序。 我需要知道如何为地铁做这件事。 显然XmlTextReader不再有效。 任何代码或建议?

谢谢

您可以使用XmlDocument.LoadFromUriAsync 。 这也应该使您的代码更简单。

 private async void Button_Click(object sender, RoutedEventArgs e) { string UrlString = "http://v1.sidebuy.com/api/get/73d296a50d3b824ca08a8b27168f3b85/?city=nashville&format=xml"; var xmlDocument = await XmlDocument.LoadFromUriAsync(UrlString); //read from xmlDocument for your values. } 

编辑:修正了基于评论的代码。

您需要将async / await keyworks添加到方法中

 private async void Button_Click(object sender, RoutedEventArgs e) var xmlDocument = await XmlDocument.LoadFromUriAsync(UrlString); 

您还可以使用XmlSerializer类,它允许您声明xml中使用的对象类型并直接映射到它们。 Deserialize和Serialize方法适用于任何流,并大大简化了使用xml数据。

 var xmlserializer = new XmlSerializer(typeof(yourcollectionclass), new []{typeof(yourchildclass1),typeof(yourchildclass2)}); var xml = (yourcollectionclass) xml.deserialize(stream)