1

我正在尝试从 spotify 读取以下 xml 文件:http ://ws.spotify.com/search/1/track?q=sail+awolnation

我想获取集合中的所有曲目,我一直在尝试使用 Linq to 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,
                    };
4

2 回答 2

0

我认为您的命名空间有问题。

我会亲自去获取这样的命名空间

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

这确保了如果命名空间确实发生了变化(通过 Spotify),那么您的程序将自动处理它,您不必更改代码并重新编译以使其与新代码一起使用。

于 2012-05-25T09:10:29.787 回答
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 = "";

这段代码对我来说很好用

于 2012-05-25T09:17:08.240 回答