一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

js转换对象为xml的教程

时间:2017-04-14 编辑:简简单单 来源:一聚教程网

本代码解决这两个问题:

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

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

 

 代码如下复制代码

varXmlHelper=function(){

 var_arrayTypes={}

 var_self=this;

 /*

 *转换对象为xml

 *@obj 目标对象

 *@rootname 节点名称

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

 */

 this.parseToXML=function(obj,rootname,arraytypes){

 if(arraytypes){

  _arrayTypes=arraytypes;

 }

 varxml="";

 if(typeofobj!=="undefined"){

  if(Array.isArray(obj)){

  xml+=parseArrayToXML(obj,rootname);

  }elseif(typeofobj==="object"){

  xml+=parseObjectToXML(obj,rootname);

  }else{

  xml+=parseGeneralTypeToXML(obj,rootname);

  }

 }

 returnxml;

 }

 varparseObjectToXML=function(obj,rootname){

 if(typeofrootname==="undefined"||!isNaN(Number(rootname))){

  rootname="Object";

 }

 varxml="<"+rootname+">";

 if(obj){

  for(varfieldinobj){

  varvalue=obj[field];

  if(typeofvalue!=="undefined"){

   if(Array.isArray(value)){

   xml+=parseArrayToXML(value,field);

   }elseif(typeofvalue==="object"){

   xml+=_self.parseToXML(value,field);

   }else{

   xml+=parseGeneralTypeToXML(value,field);

   }

  }

  }

 }

 xml+="";

 returnxml;

 }

 varparseArrayToXML=function(array,rootname){

 if(typeofrootname==="undefined"||!isNaN(Number(rootname))){

  rootname="Array";

 }

 varxml="<"+rootname+">";

 if(array){

  varitemrootname=_arrayTypes[rootname];

  array.forEach(function(item){

  xml+=_self.parseToXML(item,itemrootname);

  });

 }

 xml+="";

 returnxml;

 }

 varparseGeneralTypeToXML=function(value,rootname){

 if(typeofrootname==="undefined"||!isNaN(Number(rootname))){

  rootname=typeofvalue;

 }

 varxml="<"+rootname+">"+value+"";

 returnxml;

 }

}

//===========测试==========

varxmlhelper=newXmlHelper();

//示例1

vartestobj={

 field1:"1",

 field2:true,

 field3:[{a:1},{a:2}]

 }

console.log(xmlhelper.parseToXML(testobj,"testobj",{field3:"ArrayItem"}));

//输出:1true12

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

//示例2

vartestobj2=[1,2,3];

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

//输出:123

 

此转换代码有使用限制

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

热门栏目