【发布时间】:2012-12-28 22:09:28
【问题描述】:
我有一个很大的 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
}
};
}
}
}
问题是我想在“column”键中创建一个新数组,该数组循环所有 C(列)数据,以便我可以使用以下内容访问这些数据:columnData[0]['column'][0 ]['columnID']
【问题讨论】:
-
您是否已经考虑过递归函数?
-
你能改变源的结构还是为你固定?
-
@HMarioD 来源无法更改,数据是从外部网络服务拉取的
-
刚才我放了一个可能的答案,看看吧。
标签: javascript xml for-loop multidimensional-array associative-array