如何从xml获取数据,由linq,c#
发布时间:2020-12-15 23:52:54 所属栏目:百科 来源:网络整理
导读:嗨, 我从youtube xml获取数据时遇到问题: youtube xml的地址: http://gdata.youtube.com/feeds/api/videos?q=keywordorderby=viewCount 我试试这个,但程序没有进入linq查询. key = @"http://gdata.youtube.com/feeds/api/videos?q="+keyword+@"orderby=vie
嗨,
我从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中的元素要求您完全符合命名空间.在这种情况下:
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); } 适合我.为了避免写出命名空间,一个选项是按本地名称搜索(例如youtube.Elements().Where(e => e.LocalName ==“feed”).我不确定是否有更优雅的方式成为“命名空间不可知”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |