js转换对象为xml


Posted in Javascript onFebruary 17, 2017

本代码解决这两个问题:

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>

此转换代码有使用限制

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

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

Javascript 相关文章推荐
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
js函数的引用, 关于内存的开销
Sep 17 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 Javascript
JS随机生成不重复数据的实例方法
Jul 17 Javascript
JavaScript实现的圆形浮动标签云效果实例
Aug 06 Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
ES6与CommonJS中的模块处理的区别
Jun 13 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 Javascript
js中addEventListener()与removeEventListener()用法案例分析
Mar 02 Javascript
Vue使用自定义指令实现拖拽行为实例分析
Jun 06 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
Oct 20 Javascript
EsLint入门学习教程
Feb 17 #Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 #Javascript
AngularJS执行流程详解
Feb 17 #Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
Feb 17 #Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 #Javascript
走进AngularJs之过滤器(filter)详解
Feb 17 #Javascript
jQuery实现弹幕效果
Feb 17 #Javascript
You might like
各种战术和打法的原创者
2020/03/04 星际争霸
php curl的深入解析
2013/06/02 PHP
浅析is_writable的php实现
2013/06/18 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
javascript自然分类法算法实现代码
2013/10/11 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
vue组件间通信解析
2017/03/01 Javascript
layui中table表头样式修改方法
2018/08/15 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
python随机生成指定长度密码的方法
2015/04/04 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
PyTorch-GPU加速实例
2020/06/23 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
车间班组长竞聘书
2015/09/15 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技