2012-05-25 91 views
1

我試圖讀取Spotify的下面的XML文件:http://ws.spotify.com/search/1/track?q=sail+awolnation的LINQ to XML解析的Spotify

我希望得到一個集合中的所有曲目,我一直在嘗試使用LINQ到XML,但沒有成功到目前爲止,我發現的所有例子都與我的做法完全相同,但出於某種原因,它並未填充我的列表,而我仍然無能爲力。

這裏是我的代碼,我使用的那一刻:

 XDocument xdoc = XDocument.Parse(xml); 
     XNamespace ns = XNamespace.Get("http://www.spotify.com/ns/music/1"); 

     var tracks = from track in xdoc.Descendants(ns + "track") 
        select new 
        { 
         Name = track.Element(ns + "name").Value, 
        }; 

回答

0
WebClient wb = new WebClient(); 
var xdoc = XDocument.Parse(wb.DownloadString("http://ws.spotify.com/search/1/track?q=sail+awolnation")); 
XNamespace ns = XNamespace.Get("http://www.spotify.com/ns/music/1"); 
var tracks = from track in xdoc.Root.Elements(ns + "track") 
    select 
     new 
     { 
      Name = track.Element(ns + "name").Value 
     }; 
string s = ""; 

這個代碼是工作的罰款與我

0

我覺得你有與命名空間的問題。

我會親自去獲得的命名空間這樣

XDocument xDoc = XDocument.Load("http://ws.spotify.com/search/1/track?q=sail+awolnation"); 
XNamespace ns = xDoc.Document.Root.GetDefaultNamespace(); 

這確保瞭如果命名空間曾經確實發生了改變(由Spotify的),那麼你的程序將自動處理它,你不會有改變的代碼和重新編譯,使其與新的工作。