5

やあ、

YouTube xml からデータを取得する際に問題があります: YouTube xml のアドレス: http://gdata.youtube.com/feeds/api/videos?q=keyword&orderby=viewCount

これを試してみましたが、プログラムはlinqの問い合わせに入りません。

key = @"http://gdata.youtube.com/feeds/api/videos?q="+keyword+@"&orderby=viewCount";
youtube = XDocument.Load(key);
urls = (from item in youtube.Elements("feed")
       select new VideInfo
       {
            soundName = item.Element("entry").Element("title").ToString(),
            url = item.Element("entry").Element("id").ToString(),
       }).ToList<VideInfo>();

これを解決する方法はありますか?ありがとう!

4

1 に答える 1

3

Linq to XML で要素を検索するには、名前空間で完全に修飾する必要があります。この場合:

var keyword = "food";
var key = @"http://gdata.youtube.com/feeds/api/videos?q="+keyword+@"&orderby=viewCount";
var youtube = XDocument.Load(key);
var urls = (from item in youtube.Elements("{http://www.w3.org/2005/Atom}feed")
            select new
            {
                soundName = item.Element("{http://www.w3.org/2005/Atom}entry").Element("{http://www.w3.org/2005/Atom}title").ToString(),
                url = item.Element("{http://www.w3.org/2005/Atom}entry").Element("{http://www.w3.org/2005/Atom}id").ToString(),
            });
foreach (var t in urls) {
    Console.WriteLine(t.soundName + " " + t.url);
}

私のために働きます。名前空間を書き出さないようにするための 1 つのオプションは、ローカル名で検索することです (たとえばyoutube.Elements().Where(e => e.LocalName == "feed")、「名前空間にとらわれない」ためのより洗練された方法があるかどうかはわかりません。

于 2013-11-02T14:09:42.873 に答える