2012-04-22 74 views
0

道歉,如果這是一個簡單的,但我很新的C#。在WP7應用程序中,我試圖使用XDocument.Load()方法將XML文件(特別是Blogger提要)加載到XDocument中。但是,當我嘗試以下方法:從URL加載xml文件到XDocument

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

我得到的錯誤:

無法打開 'http://destroyedordamaged.blogspot.com/feeds/posts/default'。 Uri參數必須是指向Silverlight應用程序的XAP包內的內容的相對路徑。如果您需要加載從任意開放的內容,請使用參閱加載XML內容的文檔的WebClient/HttpWebRequest的

所以我不得不環顧四周,發現有人誰認爲我這樣做,而不是:

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從Feed中加載到XDocument中的最簡單方法。

我環顧四周,但似乎每個人都有這樣的問題,他們已經指向他們的代碼在一個特定的.xml文件,而不是像沒有我的擴展名的URL。

我會很感激你可以提供任何輸入。提前致謝。

回答

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); 
      // (...) 
     } 
    } 

我在我的應用程序前一段時間使用過,所以我敢肯定它的工作原理。

+0

非常感謝 – user1349655 2012-07-08 01:12:26

0

查看天氣預報示例Windows Phone代碼示例。我用這個例子來熟悉如何去做這件事。下載源代碼並查看Forecast.cs。

Sample code link