2012-02-29 102 views
0

喲!使用XML解析器獲取用戶最近的YouTube視頻

因此,我的目標是獲取由YouTube用戶上傳的三個最新視頻,本例中爲「aosjeff」。我知道我可以發送一個「get」請求給youtube,然後使用XML解析器解析這個xml文檔(我不能使用php,我使用的站點構建站點不會讓我),而且我正在嘗試在這裏使用一些代碼將「獲取」請求的結果存儲在JavaScript中的字符串中,以便我可以解析它們。但是每當我運行這段代碼並調用「alert(txt)」時,只返回字符串「[object document]」,而不是xml數據。這裏的代碼:

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

這是一個問題。另一個,我想,是如何使用解析器 - 我已閱讀但仍不明白。你能解釋它是如何工作的嗎?我知道我搜索某個標籤 - 然後它給了我一個標籤中元素的列表。但是,如何瀏覽該列表?

乾杯,感謝您的時間

西蒙

+0

任何人都知道這事?我有點卡住了。 – Catlard 2012-03-01 13:49:19

回答

2

你不必解析使用的DOMParser的responseXML屬性,因爲它已經是一個XML對象。使用字符串到XML的解析方法(推薦),或用responseText替換responseXML屬性。

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;