2012-02-28 20 views
1

私はXAMLを使用する方法と、Visual Studio 11 Developer Previewを使用して新しいウィンドウズメトロアプリケーションを構築する方法を学びたいと考えています。メトロアプリケーションXML APIの読み方

私はC#を使用するのと同じ方法でXMLファイルを読み込む方法がわかりませんが、問題があります。例えば、ここで私は過去にそれをやったのです。

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

あなたはあなたがあなたのXMLで使用されるオブジェクトの型を宣言することができますし、それらに直接マップもするXmlSerializerクラスすることができる方法

private async void Button_Click(object sender, RoutedEventArgs e) 

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

に非同期/のawait keyworksを追加する必要があります。 DeserializeメソッドとSerializeメソッドは任意のストリームで動作し、xmlデータの使用を大幅に簡素化します。

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