js xml 转 html标签,js转换对象为xml

本代码解决这两个问题:

1.已知js对象没有类名概念,所以转换时要手动指定顶级节点名称

2.还有数组内的元素如果是对象类型,需要配置此数组元素的节点名称

var XmlHelper=function(){

var _arrayTypes={}

var _self=this;

/*

*转换对象为xml

*@obj 目标对象

*@rootname 节点名称

*@arraytypes 配置数组字段子元素的节点名称

*/

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="";

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="";

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=""+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"}));

//输出:1true12

console.log("================================================");

//示例2

var testobj2=[1,2,3];

console.log(xmlhelper.parseToXML(testobj2,"testobj2"));

//输出:123

此转换代码有使用限制

对象中值为数组的字段名最好不要一样

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值