2015-01-23 6 views
0

나는 확실히 간단한 질문입니다. XML 문서가 있고 AJAX를 사용하여 동일한 이름을 가진 태그의 값을 배열로 가져 오려고합니다. XML :XML - 배열에서 태그의 모든 값을 가져옵니다.

<data> 
    <instance> 
    <term>Dog</term> 
    <clicks>11235</clicks> 
    </instance> 
    <instance> 
    <term>Cat</term> 
    <clicks>6309</clicks> 
    </instance> 
</data> 

내 자바 스크립트 :

console.log(xml.getElementsByTagName("clicks")[0].childNodes[0].nodeValue); 

이 첫 번째 값을 반환 것으로 보인다. 어떻게 모두 돌려 주나요?

답변

0

당신은 모든 태그를 얻기 위해 jQuery를 사용하고 모든 값을 얻을 수 .each()를 사용할 수 있습니다

$(xml).find('clicks').each(function(){ 
    console.log($(this).html()); 
}); 

또는 배열을 얻으려면, 당신은 .map() 기능을 사용할 수 있습니다

var list = $(xml).find('clicks').map(function(){ 
    return $(this).html(); 
}).get(); 

d3.js를 사용하면 다음과 같이 할 수 있습니다.

DOM에 div 정의 <div></div>

var list = d3.select('div') 
      .html(xml) // set the xml content 
      .selectAll('clicks') 
      .each(function(){ 
       console.log(this.innerHTML); 
      }); 
console.log(list); //you can do what you want with all clicks elements 
+0

감사합니다. d3.js 프레임 워크를 사용하므로 jQuery와 함께 사용할 수 없습니다. JavaScript에 방법이 있습니까? – user3927582

+0

이 편집을 보니 문제가 해결 될 수 있다고 생각합니다. – Ragnar

0

자바로 쓴 것을보십시오. 배열 부분을 변경해야한다고 생각합니다. 이것이 도움이되기를 바랍니다.

NodeList clicks = xml.getElementsByTagName("clicks") 
int[] clickArray = new int[clicks.getLength()]; 
for(int i=0; i<clicks.getLength();i++){ 
    clickArray[i] = clicks[i].childNodes[0].nodeValue; 
} 
0
function test(){ 
var clicks = xml.getElementsByTagName("clicks"); 
var result = new Array(); 
foreach(var c in clicks){ 
    console.log(c); 
    result.push(c.childNodes[0].nodeValue); 
} 
return result; 
} 

이 모두를 인쇄해야 태그를 "클릭". 귀하의 결과 배열에서 지금은 모든 값이지만, "구조"태그가 항상 위에 게시 한 태그 인 경우에만 작동합니다.

관련 문제