0

我有一个很大的 xml 文档,我正在尝试将其处理成 javascript 中的数组。

<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(datarow) 组成,每个 DR 有多个 C(columns) 和一个 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]['列ID']

4

2 回答 2

0

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

于 2012-12-28T22:42:20.157 回答
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']

于 2012-12-29T13:22:28.977 回答