如何从xml获取数据,由linq,c#

前端之家收集整理的这篇文章主要介绍了如何从xml获取数据,由linq,c#前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,
我从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”).我不确定是否有更优雅的方式成为“命名空间不可知”.

原文链接:https://www.f2er.com/xml/452473.html

猜你在找的XML相关文章