使用XmlDocument.LoadFromUriAsync(UrlString)读取XML?

时间:2012-03-10 21:13:15

标签: c# xml xaml xmldocument

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

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

1 个答案:

答案 0 :(得分: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();
}

现在,当你遇到await表达式时,你的方法实际上返回到调用者(UI事件循环),假设文档没有立即可用......但是当文档已经被提取,你的方法的其余部分将被执行(返回到UI线程)并且你将拥有你可以使用的文档,就像你同步获取它一样。