使用XmlDocument.LoadFromUriAsync(UrlString)读取XML

本文关键字:读取 XML UrlString XmlDocument LoadFromUriAsync 使用 | 更新日期: 2023-09-27 18:27:34

我正在尝试阅读一些XML,并希望使用下面的代码来阅读它,因为这是针对metrowindows8应用程序的。不过,我可以在如何解析每个节点/元素等方面提供一些帮助。谢谢!

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();
}

使用XmlDocument.LoadFromUriAsync(UrlString)读取XML

很难判断您是被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();
}

现在,假设文档还没有立即可用,那么当方法到达wait表达式时,它实际上会向调用者(UI事件循环)返回。。。但是,当文档被提取后,方法的其余部分将执行(回到UI线程上),您将获得可以使用的文档,就像同步提取一样。