0

これが少し単純なものである場合はお詫びしますが、私はC#にまったく慣れていません。WP7 アプリで、XDocument.Load() メソッドを使用して XML ファイル (具体的には Blogger フィード) を XDocument に読み込もうとしています。ただし、次のことを試すと:

XDocument data = XDocument.Load("http://destroyedordamaged.blogspot.com/feeds/posts/default");

エラーが発生します:

「http://destroyedordamaged.blogspot.com/feeds/posts/default」を開くことができません。Uri パラメーターは、Silverlight アプリケーションの XAP パッケージ内のコンテンツを指す相対パスである必要があります。任意の Uri からコンテンツをロードする必要がある場合は、WebClient/HttpWebRequest を使用した XML コンテンツのロードに関するドキュメントを参照してください。

だから私は周りを見回して、代わりにこれを行うことを提案した人を見つけました:

WebClient wc = new WebClient();
wc.OpenReadCompleted += wc_OpenReadCompleted;
wc.OpenReadAsync(new Uri("http://destroyedordamaged.blogspot.com/feeds/posts/default"));

と:

private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            Console.WriteLine("THERE IS AN ERROR: "+e.Error.Message);
            return;
        }
        using (Stream s = e.Result)
        {
            data = XDocument.Load(s);
        }
    } 

しかし、これもうまくいかないようです。XDocument には何も読み込まれません。私がここに欠けているものはありますか?xml をフィードから XDocument にロードする最も簡単な方法を見つけたいと思います。

私は周りを見回しましたが、このような問題を抱えている人は皆、私のような拡張子のない URL ではなく、特定の .xml ファイルをコードで指しているようです。

ご提供いただける情報をいただければ幸いです。よろしくお願いします。

4

2 に答える 2

2

DownloadStringAsyncの代わりに使用してみてくださいOpenReadAsync

var webClient = new WebClient();
webClient.DownloadStringCompleted += RequestCompleted;
webClient.DownloadStringAsync(new Uri(SOURCE));

そしてRequestCompletedコード:

    private void RequestCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            var feedXml = XDocument.Parse(e.Result);
            // (...)
        }
    }

しばらく前にアプリで使用したので、動作すると確信しています。

于 2012-04-22T16:49:16.903 に答える
0

天気予報のサンプル、WindowsPhoneのコードサンプルを確認してください。私はこのサンプルを使用して、物事のやり方に慣れました。ソースコードをダウンロードして、Forecast.csをチェックしてください。

サンプルコードリンク

于 2012-04-23T18:30:31.127 に答える