我一直在尝试使用此链接从 youtube 检索一些视频,事情进展顺利,直到我添加上传日期过滤器时,XML
文件不包含entry
标签中的yt:statistics
。除此之外,当我添加其他过滤器(如排序方式)时,似乎没有问题。
我在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
.
知道问题出在哪里吗?
奇怪。它似乎对我有用:)
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();