Читать XML с помощью XmlDocument.LoadFromUriAsync (UrlString)? - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь прочитать немного XML и хочу прочитать его, используя приведенный ниже код, так как это для приложения Metro Windows 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 Ответ

4 голосов
/ 11 марта 2012

Трудно сказать, смущена ли вы 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, предполагая, что документ не стал мгновенно доступным ... но затем, когда документ имеет После того, как вы извлечены, остальная часть вашего метода будет выполнена (обратно в потоке пользовательского интерфейса), и у вас будет документ, который вы можете использовать, как если бы вы извлекали его синхронно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...