0

我有一個很大的XML文檔,我試圖在JavaScript中處理成一個數組。在for循環中創建關聯數組

<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> 

它由多個DR(數據行),並且每個DR的具有多個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源碼不能更改,數據是從外部webservice中拉出的 – 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 []。