2012-02-29 4 views
0

Yo!XMLパーサーを使ってユーザーから最新のYouTube動画を取得

私の目標は、YouTubeユーザーがアップロードした3つの最新のビデオ(この場合は「aosjeff」)を取得することです。私はyoutubeに "get"リクエストを送信し、XMLパーサを使ってXML文書を解析できることを理解しています(PHPを使用することはできません。私が使用しているサイト構築サイトではできません)。私はそれらを解析することができるようにJavaScriptの文字列に "get"リクエストの結果を格納するためにここでいくつかのコードを使用する。しかし、このコードを実行して "alert(txt)"を呼び出すと、xmlデータではなく "[object document]"という文字列だけが返されます。コードは次のとおりです。

function getVideoHTML() 
{ 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET","https://gdata.youtube.com/feeds/api/users/aosjeff/uploads",false); 
    xmlhttp.send(); 

    txt = xmlhttp.responseXML; 

    if (window.DOMParser) 
    { 
     parser=new DOMParser(); 
     xmlDoc=parser.parseFromString(txt,"text/xml"); 
    } 
    else // Internet Explorer 
    { 
     xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async=false; 
     xmlDoc.loadXML(txt); 
    } 

    //document.getElementById("to").innerHTML= 
    //xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; 
    //document.getElementById("from").innerHTML= 
    //xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue; 
    //document.getElementById("message").innerHTML= 
    //xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue; 
    alert(txt); 
} 

これは1つの問題です。もう1つは、パーサーを使う方法です。私はこれまでに読んだことがありますが、まだ理解していません。あなたはどのようにそれが動作するか説明することができますか?私は特定のタグを検索することを理解しています - そして、それは私にそのタグの要素のリストを与えます。しかし、そのリストをどのようにナビゲートするのですか?

乾杯、お時間に感謝

サイモン

+0

誰もがこのことについて何を知っていますか?私はちょっと立ち往生している。 – Catlard

答えて

2

あなたはそれがすでにXMLオブジェクトだから、DOMParserにを使用してresponseXML性質を解析する必要はありません。 string-to-xml解析メソッド(推奨)を使用するか、responseXMLプロパティをresponseTextに置き換えます。

txt = xmlhttp.responseXML; // <-- This is a XML document object 

if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); // <--- txt should be a string 
} else {....} 

は次のようになります。

xmlDoc = xmlhttp.responseXML;