2012-02-29 31 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;