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 相关文章推荐
图片Slider 带左右按钮的js示例
Aug 30 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
js表头排序实现方法
Jan 16 Javascript
多种js图片预加载实现方式分享
Feb 19 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
react 兄弟组件如何调用对方的方法示例
Oct 23 Javascript
浅谈KOA2 Restful方式路由初探
Mar 14 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
用libtemplate实现静态网页生成
2006/10/09 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
Prototype Template对象 学习
2009/07/19 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
javascript实现表单验证
2016/01/29 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
详解如何较好的使用js
2016/12/16 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
Python实现把xml或xsl转换为html格式
2015/04/08 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
python生成九宫格图片
2018/11/19 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
详解Python3中ceil()函数用法
2019/02/19 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
PyQt5实现简单的计算器
2020/05/30 Python
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
中学生英语演讲稿
2014/04/26 职场文书
婚宴主持词
2015/06/30 职场文书
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
golang操作rocketmq的示例代码
2022/04/06 Golang
python开发制作好看的时钟效果
2022/05/02 Python