2013-04-27 107 views
0

提取数据我是一个JavaScript和YouTube API初学者从YouTube播放列表XML

我试图从XML文件访问某些数据。这是从YouTube播放列表生成的原子文件。我希望能够提取列表中每个视频的缩略图,视频和描述。

下面是一些JS我拼凑起来:

$.get("playlist.xml", function(xml){ 
var videos = $.xml2json(xml); 
alert(videos.entry[0].title); 
console.log(videos);  
}); 

playlist.xml包含从调用生成的文件:

https://gdata.youtube.com/feeds/api/playlists/playlistid?v=2 

其中playlistid是一个有效的播放清单ID。

该文件包含所有预期的XML和它转换成JSON(通过JQuery XML到JSON插件)与线:

var videos = $.xml2json(xml); 

在上面的代码给了我预期的输出,即:在播放列表中第一个视频的标题。

当我尝试访问其他数据段时,出现了问题。

entry[].media:group.media:thumbnail[] 

看来,转换成JSON之后,“::”缩略图,例如,在XML发现这里被转换为“$”,但我得到的错误错误,当我尝试两种:

$.get("playlist.xml", function(xml){ 
var videos = $.xml2json(xml); 
alert(videos.entry[0].media:group.media:thumbnail[0]); 
console.log(videos);  
}); 

或:

$.get("playlist.xml", function(xml){ 
var videos = $.xml2json(xml); 
alert(videos.entry[0].media$group.media$thumbnail[0]); 
console.log(videos);  
}); 

的错误是的变体:

TypeError: videos.entry[0].media$group is undefined 

我觉得我并不理解非常基本的东西,但对于我的生活,我不知道它是什么。

下面是一个示例播放列表的XML文件,它是否会有所帮助: https://gdata.youtube.com/feeds/api/playlists/PLjyIfAzy9xVUWYcLK54OPd1lDXzMROK_5?v=2

回答

0

为什么不给摆在首位(在&alt=json在网址的结尾)饲料的JSON?

https://gdata.youtube.com/feeds/api/playlists/PLjyIfAzy9xVUWYcLK54OPd1lDXzMROK_5?v=2&alt=json 

您可以添加callback参数以及和把那JSON请求到JSONP,它可以让你用纯JavaScript的客户方发送。

0

请参阅编辑AT BOTTOM

好了,所以我增加了& ALT = JSON,但你失去了我的回调打开JSON为JSONP。这里是我当前的代码:

var ytPlaylist="PLjyIfAzy9xVUWYcLK54OPd1lDXzMROK_5";  
var jsonFileUrl="https://gdata.youtube.com/feeds/api/playlists/"+ytPlaylist+"?v=2&alt=json"; 


$.get(jsonFileUrl, function(data) { 
alert("Data: " + data.logo); 

}); 

而且警告框说,只有“数据:未定义”

现在,如果我做

$.get(jsonFileUrl, function(data) { 
alert("Data: " + data); 
}); 

我得到的警告框上显示的整个文件,所以数据在那里,我只是无法访问它。

data.feed.logo 
data[0].feed[0].logo 
data[0].logo 
data.logo.$t 

编辑:我也试过用之类的东西访问它不知道为什么还没有,但是这个(下)正在

$.getJSON(jsonFileUrl, function(response) { 
alert("Data: " + response.feed.entry[0].media$group.media$description.$t); 
}); 
+0

不知道为什么,但是这是工作:\t $ .getJSON(jsonFileUrl,function(response){ \t alert(“Data:”+ response.feed.entry [0] .media $ group.media $ description。$ t); }); – 2013-04-27 15:23:25

+0

我没有深入JSON,特别是我忘记了$ t。此外,由于某些原因,我尝试了几次,似乎并不喜欢使用这些$的。现在,一切都很好,它按我的意愿工作。 – 2013-04-29 02:48:20