2012-02-28 2 views
1

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

У меня проблема, хотя я не знаю, как читать 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

'XmlTextReader' устарел на века. Вы пытались использовать предлагаемую замену вместо 'XmlReader.Create'? –

ответ

2

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

EDIT: Исправлен код на основе комментария.

+0

Uri UrlString = новый Uri ("http://v1.sidebuy.com/api/get/73d296a50d3b824ca08a8b27168f3b85/?city=nashville&format=xml"); var xmlDocument = XmlDocument.LoadFromUriAsync (UrlString); – allencoded

+0

, когда я преобразовал его в тип Uri, он, кажется, не выдал ошибку, но теперь я смущен, как его читать. – allencoded

+0

У вашего url есть дополнительный «в конце и, кажется, возвращает JSON в этом случае, если вы удалите его, чтобы он работал. Возвращаемый объект имеет тип XmlDocument. Вот ссылка (http://www.csharpfriends.com /Articles/getArticle.aspx?articleID=312), который поможет вам прочитать файл. – sarvesh

1

вам нужно добавить асинхронной/Await keyworks методу

private async void Button_Click(object sender, RoutedEventArgs e) 

var xmlDocument = await XmlDocument.LoadFromUriAsync(UrlString); 
0

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

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