1

有人可以快速帮助我吗,我正在写一些使用 Youtube API 的东西,它给了我 XML 的结果,我试图从 XML 响应中获取 vid 的标题。

这是 XML 的链接:https ://gdata.youtube.com/feeds/api/videos/T7sIiqq66rk?v=2

这是我的代码:

string nameURL = "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2";
WebRequest nameRequest = WebRequest.Create(nameURL);
HttpWebResponse nameResponse = (HttpWebResponse)nameRequest.GetResponse();
Stream nameStream = nameResponse.GetResponseStream();
StreamReader nameReader = new StreamReader(nameStream);
string XML = nameReader.ReadToEnd();
var VideoInfo = from e in XElement.Parse(XML).Elements("entry") select new {Id = e.Element("title").Value};
Console.WriteLine(VideoInfo.FirstOrDefault().Id);

调试器似乎打破了 WriteLine 方法,说它为空,我也尝试了其他一些方法,但似乎只能得到标题元素。

编辑:有什么问题导致结果为空,我已经确定了这一点,但有人可以指出为什么它一直返回空。

4

1 回答 1

1

首先,VideoInfo.FirstOrDefault()如果没有条目,将返回 null,因此当您尝试访问该Id字段时会抛出异常。

由于entry是根元素,您应该访问 XDocument.Root,而不是Elements("entry")

你的代码应该更像这样:

var xDoc = XDocument.Parse(XML);

var VideoInfo = new {Id = xDoc.Root.Element("id").Value };

Console.WriteLine(VideoInfo.Id);
于 2012-07-22T17:55:05.070 回答