js转换对象为xml

 更新时间:2017年02月17日 14:44:12   作者:lopcomvir  
本文主要介绍了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="<"+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>

此转换代码有使用限制

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

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

相关文章

  • canvas轨迹回放功能实现

    canvas轨迹回放功能实现

    这篇文章主要介绍了canvas轨迹回放功能实现过程以及相关的代码整理,跟着小编一起学习下吧。
    2017-12-12
  • Js检查变量类型的代码()

    Js检查变量类型的代码()

    本文章为你提供一款js 返回变量的类型代码哦,如果你不懂得如何获取js变量的类型的话,看看我们下面的代码你就知道如何获取js变量的代码哦。
    2010-07-07
  • javascript动态添加样式(行内式/嵌入式/外链式等规则)

    javascript动态添加样式(行内式/嵌入式/外链式等规则)

    添加CSS的方式有行内式、嵌入式、外链式、导入式,下面为大家详细介绍下javascript动态添加以上样式规则的方法,感兴趣的朋友可以参考下哈
    2013-06-06
  • javascript 小数取整简单实现方式

    javascript 小数取整简单实现方式

    这篇文章主要介绍了javascript 小数取整d的简单实现方式,需要的朋友可以参考下
    2014-05-05
  • 使用JavaScript实现一个物理模拟

    使用JavaScript实现一个物理模拟

    最近掌门人在写3D游戏,对于其中的物理效果很感兴趣,今天我将使用纯JavaScript来实现一个简易的物理模拟,其中包括碰撞检测与响应、摩擦力与空气阻力、以及物体的破坏效果,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-01-01
  • 80行代码写一个Webpack插件并发布到npm

    80行代码写一个Webpack插件并发布到npm

    最近在学习 Webpack 相关的原理,本文用80行代码写一个Webpack插件并发布到npm,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • uni-app开发微信小程序之H5压缩上传图片的问题详解

    uni-app开发微信小程序之H5压缩上传图片的问题详解

    这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,下面这篇文章主要给大家介绍了关于uni-app开发微信小程序之H5压缩上传图片的问题,需要的朋友可以参考下
    2023-03-03
  • MockJs结合json-server模拟后台数据

    MockJs结合json-server模拟后台数据

    这篇文章主要为大家详细介绍了MockJs结合json-server模拟后台数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • token 机制和实现方式

    token 机制和实现方式

    这篇文章主要介绍了token 机制和实现方式的相关资料,帮助大家更好的理解和学习token,感兴趣的朋友可以了解下
    2020-12-12
  • 推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)

    推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)

    这篇文章主要介绍了推荐阅读的js快速判断IE浏览器(兼容IE10与IE11),因为ie11取消了很多低版本的判断,很多js都需要修改了,这里简单介绍下需要的朋友可以参考下
    2015-12-12

最新评论