Metro Application Как читать XML API? - PullRequest
1 голос
/ 28 февраля 2012

Хорошо, поэтому я пытаюсь научиться работать с XAML и создавать новые приложения Windows Metro с помощью Visual Studio 11 Developer Preview.

У меня проблема, хотя я не знаю, как читать 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 больше не действителен.Любой код или предложения?

Спасибо

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Вы можете использовать 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.
         }

РЕДАКТИРОВАТЬ: Исправлен код на основе комментария.

1 голос
/ 11 июля 2012

вам нужно добавить асинхронную / ожидающую клавиши в метод

private async void Button_Click(object sender, RoutedEventArgs e)

var xmlDocument = await XmlDocument.LoadFromUriAsync(UrlString);
0 голосов
/ 29 августа 2012

Вы также можете использовать класс XmlSerializer, который позволяет объявлять типы объектов, используемые в xml, и отображать их напрямую.Методы десериализации и сериализации работают с любым потоком и значительно упрощают использование данных XML.

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