0

javascript에서 배열로 처리하려고하는 큰 xml 문서가 있습니다. for-loop에서 연관 배열 만들기

그것은 여러 DR (DataRow를) 각각 DR 구성
<DR> 
    <C> 
    <SWDGDRC> 
     <CID>0</CID> 
     <V>06/01/2012 00:00:00</V> 
    </SWDGDRC> 
    <SWDGDRC> 
     <CID>1</CID> 
     <V>1131</V> 
    </SWDGDRC> 
    <SWDGDRC> 
     <CID>2</CID> 
     <V>28800</V> 
    </SWDGDRC> 
    </C> 
    <rowid>0</rowid> 
</DR> 
<DR> 
    <C> 
    <SWDGDRC> 
     <CID>0</CID> 
     <V>06/02/2012 00:00:00</V> 
    </SWDGDRC> 
    <SWDGDRC> 
     <CID>1</CID> 
     <V /> 
    </SWDGDRC> 
    <SWDGDRC> 
     <CID>2</CID> 
     <V /> 
    </SWDGDRC> 
    </C> 
    <rowid>1000</rowid> 

여러 C (열) 및 ROWID를 갖는다. 내가 연관 배열로 루프에 모든 데이터를 시도하고있다 :

for(var i=0; i < DR.length; i++) {   // loop DR 
     for(var j=0; j < DR[i].getElementsByTagName('C').length; j++) { // loop C 
      for(var k=0; k < DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC').length; k++) { //loop SWDGDRC 
       columnData[i] = { 
        "rowid": DR[i].getElementsByTagName('rowid')[0].textContent, 
        "column": { 
         columnID: DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('CID')[0].textContent, 
         value:DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('V')[0].textContent 
        } 
       }; 
      } 
     } 
    } 

문제 나는 모든 C (열) 루프은 "열"키에 새로운 배열을 할 수있는 데이터 내가 할 수있는 그렇게 다음과 같이이 데이터에 액세스하십시오. columnData [0] [ 'column'] [0] [ 'columnID']

+0

이미 재귀 함수에 대해 생각해 보셨습니까? –

+0

소스의 구조를 변경 하시겠습니까? 아니면 해결 되었습니까? – HMarioD

+0

@HMarioD 소스를 변경할 수 없으며 외부 웹 서비스에서 데이터를 가져옵니다 – Stvenoo

답변

0
for(var i=0; i < DR.length; i++) {   // loop DR 
     for(var j=0; j < DR[i].getElementsByTagName('C').length; j++) { // loop C 
      columnData[i] = new Array(DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC').length); 
      columnData[i] = { 
       rowid: DR[i].getElementsByTagName('rowid')[0].textContent 
      } 
      for(var k=0; k < DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC').length; k++) { //loop SWDGDRC 
       columnData[i][k] = { 
        columnID: DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('CID')[0].textContent, 
        value:DR[i].getElementsByTagName('C')[j].getElementsByTagName('SWDGDRC')[k].getElementsByTagName('V')[0].textContent 
       }; 
      } 
     } 
    } 

이전 코드를 사용하여 수정했습니다. 먼저 배열의 길이를 가진 새로운 배열을 만들고 난 다음 'rowid'필드를 설정합니다. 이렇게하면 다음과 같이 데이터에 액세스 할 수 있습니다. columnData [0] [0] [ 'columnID']

0

DRCollection [] -> DRCollection [0] = row_id, DRCollection [1] = colCollection [].