2009-01-19 73 views
2

我實際上正在玩弄我通過REST調用的last.FM web服務API。當我得到響應時,我嘗試將結果轉換爲XDocument,以便我可以使用LINQ來處理它。將REST響應轉換爲XDocument的問題

但是,當我將結果字符串傳遞給XDocumnet構造函數時,拋出了一個ArgumentException,告訴我「無法將空白字符添加到內容中」。不幸的是,我對Web服務和XML編程非常陌生,所以我不知道如何解釋這個異常。

我希望有人能給我一個提示如何解決這個問題。

+0

您需要張貼返回的XML,或者您正在使用調用的代碼,這是得太少去。 – casperOne 2009-01-19 22:17:52

回答

4

這聽起來像是你在一個字符串中持有響應。如果是這種情況,您可以嘗試在XDocument上使用Parse方法,該方法用於從字符串中解析XML。

string myResult = "<?xml blahblahblah>"; 
XDocument doc = XDocument.Parse(myResult); 

這可能會也可能不會解決您的問題。只是一個值得嘗試看看你是否得到不同結果的建議。

3

這裏是你可以用它來查詢服務的示例:

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (WebClient client = new WebClient()) 
     using (Stream stream = client.OpenRead("http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=b25b959554ed76058ac220b7b2e0a026&artist=Cher&album=Believe")) 
     using (TextReader reader = new StreamReader(stream)) 
     { 
      XDocument xdoc = XDocument.Load(reader); 
      var summaries = from element in xdoc.Descendants() 
        where element.Name == "summary" 
        select element; 
      foreach (var summary in summaries) 
      { 
       Console.WriteLine(summary.Value); 
      } 
     } 
    } 
} 
+0

你可以只做XDocument doc = XDocument.Load(「http:// www ...」); 如果我記得正確。 Dave – 2009-01-19 23:47:58