正如标题所示,我希望能够在HTML页面中使用XML文件中的数据。让我解释一下页面试图做什么,以帮助解释我需要帮助的内容。。
HTML页面完成后将带着搜索查询进入YouTube服务器,并检索从搜索中生成的带有最新信息的XML文件。然后,页面将查看给定的XML文件,找到<yt:videoid>
节点,并将字符串传输到HTML文件。然后,HTML文件可以使用字符串(可能是javascript)来制作嵌入视频代码。
因此,由于搜索查询,结果页面将始终具有最新的视频。
到目前为止,我已经找到了获取XML文件的链接(如下),并查看了XML(链接:https://gdata.youtube.com/feeds/api/videos?author=inthegamesroom&orderby=已发布&prettyprint=true&起始索引=1&最大结果=1&v=2)
我发现我想要的信息在一个名为<yt:videoid>
的节点中,该节点位于<media:group>
之下,该节点处于<feed>
之下
在网上做了一些研究后(因为我不是javascript程序员,我只有基本知识,我发现你可以使用XML DOM从HTML页面中读取和调整XML文件。但XML DOM代码的问题是,它需要XML文件托管在实际的服务器上,而这显然不是-因为它在youtube上。
有人知道我可以读取数据并将其放入javascript变量的方法吗?我不一定希望你花很长时间写一些代码,但至少希望你能引导我朝着正确的方向前进?
非常感谢高级,
蚂蚁。
附言,请记住,我不是JS或HTML程序员。。我只知道基础知识,如果我在这篇文章中做错了什么,请告诉我,因为这是我在stackoverflow上的第一次。
无需在浏览器端执行任何操作即可获取或解析XML。
Youtube的API是公共的,允许任何人(?)查询它,这意味着您只需要一个简单的ajax调用就可以获得xml文件。通过一些额外的jQuery(或任何其他库),您可以提取视频的id:
jQuery(document).ready(function() {
// request xml data
jQuery.ajax('https://gdata.youtube.com/feeds/api/videos?author=inthegamesroom&orderby=published&prettyprint=true&start-index=1&max-results=1&v=2',{
dataType:'xml',
success: function(data,status, xhr ) {
// process response
var $_d =$(data);
var videoTag = $_d.find('yt\:videoid'); // doesn't seem to work
var videoTag = $_d.find('videoid'); // works
var videoId = videoTag.text();
// do the embedding
embedYT(videoId);
}
});
// a simple way to embed a youtube player in a page
function embedYT(id) {
jQuery(document.body).append("<iframe class='youtube-player' type='text/html' width='640' height='385' src='http://www.youtube.com/embed/"+id+" frameborder='0'></iframe>")
}
});
jsFiddle
示例php代码:
// content of example.php
<?php
$xml = simplexml_load_file('https://gdata.youtube.com/feeds/api/videos?author=inthegamesroom&orderby=published&prettyprint=true&start-index=1&max-results=1&v=2');
foreach( $xml->children() as $child) {
if($child->getName() == 'yt:videoid'){
echo $child->asXML();
}
}
?>
示例jQuery代码:
var ytUrlThing;
$.post('example.php', function(data) { ytUrlThing = data; });