【问题标题】:yt:statistics can't be found in youtube feedsyt:在 youtube 供稿中找不到统计信息
【发布时间】:2013-09-14 17:35:25
【问题描述】:

我一直在尝试使用此 link 从 youtube 检索一些视频,并且事情进展顺利,直到我添加上传日期过滤器时,XML 文件不包含 entry 中的 yt:statistics标签。除此之外,当我添加其他过滤器(如 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。

知道问题出在哪里吗?

【问题讨论】:

    标签: c# xml wpf youtube youtube-api


    【解决方案1】:

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

    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();
    

    【讨论】:

    • 你说得对,似乎 xml 确实包含它,我会编辑我的帖子
    • @User-_- 你还想要什么?我发布了一个答案以获取 yt:statistics 的所有属性
    • @User-_- 因为所有条目都不包含yt:statistics。只有其中一些。所以你的代码在entry.Descendants().Where(c => c.Name.LocalName == "statistics").First() 中抛出异常请参阅我的代码中的 where 条件。
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多