js轉(zhuǎn)換對象為xml
本代碼解決這兩個(gè)問題:
1.已知js對象沒有類名概念,所以轉(zhuǎn)換時(shí)要手動(dòng)指定頂級節(jié)點(diǎn)名稱
2.還有數(shù)組內(nèi)的元素如果是對象類型,需要配置此數(shù)組元素的節(jié)點(diǎn)名稱
var XmlHelper=function(){ var _arrayTypes={} var _self=this; /* *轉(zhuǎn)換對象為xml *@obj 目標(biāo)對象 *@rootname 節(jié)點(diǎn)名稱 *@arraytypes 配置數(shù)組字段子元素的節(jié)點(diǎn)名稱 */ 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"})); //輸出:<testobj><field1>1</field1><field2>true</field2><field3><ArrayItem><a>1</a></ArrayItem><ArrayItem><a>2</a></ArrayItem></field3></testobj> console.log("================================================"); //示例2 var testobj2=[1,2,3]; console.log(xmlhelper.parseToXML(testobj2,"testobj2")); //輸出:<testobj2><number>1</number><number>2</number><number>3</number></testobj2>
此轉(zhuǎn)換代碼有使用限制
對象中值為數(shù)組的字段名最好不要一樣
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
- 詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用
- Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼
- 如何在JS中實(shí)現(xiàn)相互轉(zhuǎn)換XML和JSON
- php實(shí)現(xiàn)xml與json之間的相互轉(zhuǎn)換功能實(shí)例
- C#中使用JSON.NET實(shí)現(xiàn)JSON、XML相互轉(zhuǎn)換
- JavaScript實(shí)現(xiàn)將xml轉(zhuǎn)換成html table表格的方法
- C# XML與Json之間相互轉(zhuǎn)換實(shí)例詳解
- js字符串轉(zhuǎn)換成xml對象并使用技巧解讀
- Jsp結(jié)合XML+XSLT將輸出轉(zhuǎn)換為Html格式
相關(guān)文章
BootStrap Table前臺和后臺分頁對JSON格式的要求
Bootstrap是一款前端非常流行的框架,其中的表格更為大家經(jīng)常使用。下面通過本文給大家介紹BootStrap Table前臺和后臺分頁對JSON格式的要求,一起看看吧2017-06-06js 圖片隨機(jī)不定向浮動(dòng)的實(shí)現(xiàn)代碼
這篇文章介紹了js圖片隨機(jī)不定向浮動(dòng)的實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-07-07解析JavaScript中的不可見數(shù)據(jù)類型
這篇文章主要是對JavaScript中的不可見數(shù)據(jù)類型進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12小程序點(diǎn)餐界面添加購物車左右擺動(dòng)動(dòng)畫
這篇文章主要介紹了小程序點(diǎn)餐界面添加購物車左右擺動(dòng)動(dòng)畫,當(dāng)用戶點(diǎn)擊添加到購物車后會有一個(gè)左右擺動(dòng)的購物車提示效果,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-09-09推薦10 款 SVG 動(dòng)畫的 JavaScript 庫
這篇文章主要推薦了10 款 SVG 動(dòng)畫的 JavaScript 庫,非常的實(shí)用,效果也非常棒,有需要的朋友可以參考下。2015-03-03[全兼容哦]--實(shí)用、簡潔、炫酷的頁面轉(zhuǎn)入效果loing
[全兼容哦]--實(shí)用、簡潔、炫酷的頁面轉(zhuǎn)入效果loing...2007-05-05基于JavaScript實(shí)現(xiàn)飄落星星特效
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)飄落星星特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08微信小程序跳轉(zhuǎn)外部鏈接的詳細(xì)實(shí)現(xiàn)方法
寫這個(gè)是因?yàn)樽罱〕绦虻囊粋€(gè)需求需要從小程序跳轉(zhuǎn)到客戶的官網(wǎng),或者其他外部報(bào)名鏈接,下面這篇文章主要給大家介紹了關(guān)于微信小程序跳轉(zhuǎn)外部鏈接的詳細(xì)實(shí)現(xiàn)方法,需要的朋友可以參考下2022-10-10