2014-01-19 1 views
0

클래스를 사용하여 XML의 mysql 쿼리의 ResultSet을 변환하고 해당 XML을 브라우저로 반환하는 서블릿을 만들었습니다. XML DOM에서 Javascript로 올바르게 탐색 할 수 있지만 항상 "정의되지 않은"값을 얻기 때문에 얼마나 많은 태그가 문서에 있는지 셀 수는 없습니다. 누구든지이 문제를 해결할 수 있습니까?서블릿으로 만든 문서의 XML 태그를 계산하는 방법

내가 XML 응답과 자바 스크립트 소스를 게시

function newXMLHttpRequest() { 
    var request = null; 
    var browser = navigator.userAgent.toUpperCase(); 
    if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") { 
     request = new XMLHttpRequest(); 
    } else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) { 
     if(browser.indexOf("MSIE 5") < 0) { 
      request = new ActiveXObject("Msxml2.XMLHTTP"); 
     } else { 
      request = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    } 
    return request; 
      } 

function search_actor(){ 
    var name = document.getElementById("actname").value; 
    if(name == "") 
     document.getElementById("risultati").innerHTML = "Inserisci un valore nel campo di ricerca"; 
    else{ 
     var req = newXMLHttpRequest(); 
     req.onreadystatechange = function(){ 
      if(req.readyState == 4){ 
       if(req.status == 200){ 
        getData(req.responseXML); 
       } 
       else if(req.status == 204){ 
        delete_suggest(); 
        } 
       } 
      } 
    } 
    req.open("POST", "GetActors", true); 
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
    var params = "name=" + escape(name); 
    req.send(params); 
} 

//debug function 
function xml_to_string(xml_node) 
{ 
    if (xml_node.xml) 
     return xml_node.xml; 
    else if (XMLSerializer) 
    { 
     var xml_serializer = new XMLSerializer(); 
     return xml_serializer.serializeToString(xml_node); 
    } 
    else 
    { 
     alert("ERROR: Extremely old browser"); 
     return ""; 
    } 
} 

function getData(responseXML){ 
    delete_suggest(); 
    var prec_risultati = document.getElementById("risultati"); 
    // Se la risposta non è nulla 
     // Punto alla radice della risposta 
     var risposta = responseXML.getElementsByTagName('first_name'); 
     var lenghtr = risposta.lenght; 
     document.getElementById("risultati").innerHTML = lenghtr; 
     if(lenghtr > 0){ 
      for(x = 0; x < lenghtr; x++){ 
       var valori = risposta[x].childNodes[0].nodeValue; 
       var row = document.createElement("tr"); 
       var td = document.createElement("td"); 
       td.appendChild(document.createTextNode(valori)); 
       row.appendChild(td); 
       prec_risultati.appendChild(row); 
      } 
     } 
} 

function delete_suggest(){ 
    document.getElementById("risultati").innerHTML = ""; 
} 

XML 응답 내가이 XML에 얼마나 많은 행을 계산 할

<results><row><actor_id>10</actor_id><first_name>CHRISTIAN</first_name><last_name>GABLE</last_name><last_update>2006-02-15 04:34:33.0</last_update></row><row><actor_id>21</actor_id><first_name>KIRSTEN</first_name><last_name>PALTROW</last_name><last_update>2006-02-15 04:34:33.0</last_update></row></results> 

유사하며, 내가 테스트

를했습니다
responseXML.getElementsByTagName("row").lenght 
responseXML.getElementsByTagName("row")[0].lenght 
responseXML.getElementsByTagName("row").childNodes.lenght 

그러나이 모든 것은 나를 정의하지 않습니다. 누군가 나를 도울 수 있니?

+0

이 대신'lenght'의'length'을 시도해 봤어 :

그것은 더 자세한 내용은 responseXML.getElementsByTagName("row").length;

이 예제를 확인해야 하는가? –

답변

관련 문제