本代碼解決這兩個問題:
網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計體驗!已為成都食品包裝袋等企業(yè)提供專業(yè)服務(wù)。
1.已知js對象沒有類名概念,所以轉(zhuǎn)換時要手動指定頂級節(jié)點名稱
2.還有數(shù)組內(nèi)的元素如果是對象類型,需要配置此數(shù)組元素的節(jié)點名稱
var XmlHelper=function(){ var _arrayTypes={} var _self=this; /* *轉(zhuǎn)換對象為xml *@obj 目標(biāo)對象 *@rootname 節(jié)點名稱 *@arraytypes 配置數(shù)組字段子元素的節(jié)點名稱 */ this.parseToXML=function(obj,rootname,arraytypes){ if(arraytypes){ _arrayTypes=arraytypes; } var xml=""; if(typeof obj!=="undefined"){ if(Array.isArray(obj)){ xml+=parseArrayToXML(obj,rootname); }else if(typeof obj==="object"){ xml+=parseObjectToXML(obj,rootname); }else{ xml+=parseGeneralTypeToXML(obj,rootname); } } return xml; } var parseObjectToXML=function(obj,rootname){ if(typeof rootname==="undefined"||!isNaN(Number(rootname))){ rootname="Object"; } var xml="<"+rootname+">"; if(obj){ for(var field in obj){ var value=obj[field]; if(typeof value!=="undefined"){ if(Array.isArray(value)){ xml+=parseArrayToXML(value,field); }else if(typeof value==="object"){ xml+=_self.parseToXML(value,field); }else{ xml+=parseGeneralTypeToXML(value,field); } } } } xml+=""+rootname+">"; return xml; } var parseArrayToXML=function(array,rootname){ if(typeof rootname==="undefined"||!isNaN(Number(rootname))){ rootname="Array"; } var xml="<"+rootname+">"; if(array){ var itemrootname=_arrayTypes[rootname]; array.forEach(function(item){ xml+=_self.parseToXML(item,itemrootname); }); } xml+=""+rootname+">"; return xml; } var parseGeneralTypeToXML=function(value,rootname){ if(typeof rootname==="undefined"||!isNaN(Number(rootname))){ rootname=typeof value; } var xml="<"+rootname+">"+value+""+rootname+">"; return xml; } } //===========測試========== var xmlhelper=new XmlHelper(); //示例1 var testobj={ field1:"1", field2:true, field3:[{a:1},{a:2}] } console.log(xmlhelper.parseToXML(testobj,"testobj",{field3:"ArrayItem"})); //輸出:console.log("================================================"); //示例2 var testobj2=[1,2,3]; console.log(xmlhelper.parseToXML(testobj2,"testobj2")); //輸出: 1 true 1 2 1 2 3
此轉(zhuǎn)換代碼有使用限制
對象中值為數(shù)組的字段名最好不要一樣
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持創(chuàng)新互聯(lián)!