1

タイトルが示すように、HTML ページで XML ファイルのデータを使用できるようにしたいと考えています。助けが必要なことを説明するために、ページが何をしようとしているのかを説明させてください..

HTML ページが完了すると、検索クエリを使用して YouTube サーバーに移動し、検索から生成された最新の情報を含む XML ファイルを取得します。次に、ページは指定された XML ファイルを調べて<yt:videoid>ノードを見つけ、文字列を HTML ファイルに転送します。次に、HTML ファイルで文字列 (おそらく JavaScript) を使用して、埋め込みビデオ コードを作成します。

したがって、検索クエリにより、結果のページには常に最新のビデオが表示されます。

これまでのところ、XML ファイルを取得するためのリンク (以下) を見つけ、XML を確認しました (リンク: https://gdata.youtube.com/feeds/api/videos?author=inthegamesroom&orderby=published&prettyprint=true&start-index =1&max-results=1&v=2 )

<yt:videoid>必要な情報は、 which is under <media:group>which is underというノードにあることがわかりました<feed>

オンラインでいくつかの調査を行った後 (私は JavaScript プログラマーではないため、基本的な知識しかありません。XML DOM を使用して、HTML ページ内から XML ファイルを読み取って適応させることができることがわかりました。しかし、XML DOM コードの問題は、実際のサーバー自体で XML ファイルをホストする必要がありますが、YouTube にあるため、明らかにそうではありません。

データを読み取ってjavascript変数に入れる方法を知っている人はいますか? コードを書くのに何年も費やす必要はありませんが、少なくとも私を正しい方向に導いてくれることを願っていますか?

よろしくお願いします。

蟻。

PS、私は JS や HTML プログラマーではないことに注意してください。私は基本的なことしか知らないので、この投稿で何か間違ったことをした場合はお知らせください。

4

2 に答える 2

0

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>")
   }
});

jsフィドル

于 2012-08-26T00:25:58.180 に答える
0

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; });
于 2012-08-25T22:55:59.450 に答える