0

我一直在尝试使用此链接从 youtube 检索一些视频,并且事情进展顺利,直到我添加上传日期过滤器时,该XML文件不包含标签yt:statistics中的。entry除此之外,当我添加其他过滤器(如 Order by)时,似乎没有问题。

我在 WebClient 中使用的 Uri 是这个:

https://gdata.youtube.com/feeds/api/videos?q=example&time=today&max-results=20&v=2

那么任何一点我都在为我犯的错误在哪里?

谢谢你。

编辑:

似乎在放置了一些断点之后XML确实包含它,但问题在于我使用的代码:

        XElement downloadedXml = XElement.Parse(xml);

        //extract entries from the xml
        var entries = downloadedXml.Descendants().Where(c => c.Name.LocalName == "entry");


        foreach (var entry in entries)
        { 
            string views = "";


            //extract the number of views
            views = entry.Descendants().Where(c => c.Name.LocalName == "statistics").First().Attribute("viewCount").Value;


        }

似乎entry不包含yt:statistics.

知道问题出在哪里吗?

4

1 回答 1

2

奇怪的。它似乎对我有用:)

var xDoc = XDocument.Load("https://gdata.youtube.com/feeds/api/videos?q=example&time=today&max-results=20&v=2");

XNamespace ns = "http://www.w3.org/2005/Atom";
XNamespace yt = "http://gdata.youtube.com/schemas/2007";
var result = xDoc.Descendants(ns + "entry")
                    .Where(e => e.Element(yt + "statistics")!=null)
                    .Select(e => e.Element(yt + "statistics")
                                .Attributes()
                                .ToDictionary(a => a.Name, a => a.Value))

                 .ToList();
于 2013-09-10T21:07:56.347 回答