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 メソッドで壊れているようで、null と言っています。他の方法もいくつか試しましたが、タイトル要素だけを取得しているようです。

編集:結果がnullになる原因となる何か問題があります。私はそれを確立しましたが、nullを返し続ける理由を誰かが指摘できます。

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 に答える