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 相关文章推荐
JavaScript中URL编码函数代码
Jan 11 Javascript
js四舍五入数学函数round使用实例
May 09 Javascript
angularJS 入门基础
Feb 09 Javascript
JavaScript里实用的原生API汇总
May 14 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
基于JS脚本语言的基础语法详解
Jul 22 Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
node.js实现带进度条的多文件上传
Mar 27 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
Aug 11 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
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
php-msf源码详解
2017/12/25 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
图片完美缩放
2006/09/07 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
原生js 实现表单验证功能
2021/02/08 Javascript
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python实现的简单发送邮件脚本分享
2014/11/07 Python
python单例模式实例分析
2015/04/08 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
视光学专业自荐信
2014/06/24 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书