嗨,
我从youtube xml获取数据时遇到问题:
youtube xml的地址: http://gdata.youtube.com/feeds/api/videos?q=keyword&orderby=viewCount
我试试这个,但程序没有进入linq查询.
我从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>();
任何人都有想法,如何解决这个问题?
谢谢!
在Linq中搜索XML中的元素要求您完全符合命名空间.在这种情况下:
原文链接:https://www.f2er.com/xml/452473.htmlvar 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); }
适合我.为了避免写出命名空间,一个选项是按本地名称搜索(例如youtube.Elements().Where(e => e.LocalName ==“Feed”).我不确定是否有更优雅的方式成为“命名空间不可知”.