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 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
May 18 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
Aug 14 Javascript
JavaScript实现仿网易通行证表单验证
May 25 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
详解redux异步操作实践
Aug 15 Javascript
Javascript confirm多种使用方法解析
Sep 25 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脚本代码
2011/02/19 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
利用python求相邻数的方法示例
2017/08/18 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
Python计算IV值的示例讲解
2020/02/28 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
什么是封装
2013/03/26 面试题
毕业生文员求职信
2013/11/03 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
家长高考寄语
2015/02/27 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL