js轉(zhuǎn)換對象為xml
本代碼解決這兩個問題:
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"}));
//輸出:<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í)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用
- Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實現(xiàn)代碼
- 如何在JS中實現(xiàn)相互轉(zhuǎn)換XML和JSON
- php實現(xiàn)xml與json之間的相互轉(zhuǎn)換功能實例
- C#中使用JSON.NET實現(xiàn)JSON、XML相互轉(zhuǎn)換
- JavaScript實現(xiàn)將xml轉(zhuǎn)換成html table表格的方法
- C# XML與Json之間相互轉(zhuǎn)換實例詳解
- js字符串轉(zhuǎn)換成xml對象并使用技巧解讀
- Jsp結(jié)合XML+XSLT將輸出轉(zhuǎn)換為Html格式
相關(guān)文章
Weex開發(fā)之WEEX-EROS開發(fā)踩坑(小結(jié))
這篇文章主要介紹了Weex開發(fā)之WEEX-EROS開發(fā)踩坑(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
解決option標(biāo)簽selected="selected"屬性失效的問題
下面小編就為大家?guī)硪黄鉀Qoption標(biāo)簽selected="selected"屬性失效的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望對大家有所幫助2017-11-11
JavaScript高級程序設(shè)計 擴(kuò)展--關(guān)于動態(tài)原型
前文是基于《JavaScript高級程序設(shè)計》中關(guān)于對象創(chuàng)建的筆記和總結(jié)。2010-11-11
淺談javascript中的Function和Arguments
下面小編就為大家?guī)硪黄獪\談javascript中的Function和Arguments。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
Javascript獲取當(dāng)前時間函數(shù)和時間操作小結(jié)
這篇文章主要介紹了Javascript獲取當(dāng)前時間函數(shù)和時間操作小結(jié),本文根據(jù)項目實際需求總結(jié)而來,需要的朋友可以參考下2014-10-10

