1

次の xml ファイルを Spotify から読み込もうとしています: 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
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 に答える
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 に答える