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 js cookie的存储,获取和删除
Dec 29 Javascript
js控制web打印(局部打印)方法整理
May 29 Javascript
javaScript如何生成xmlhttp
Dec 16 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
JQuery fileupload插件实现文件上传功能
Mar 18 Javascript
BootStrap tooltip提示框使用小结
Oct 26 Javascript
原生js实现放大镜特效
Mar 08 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
Dec 06 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
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 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
js动态设置div的值下例子
2013/10/29 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
python Django批量导入数据
2016/03/25 Python
使用python实现knn算法
2017/12/20 Python
python中的变量如何开辟内存
2018/06/26 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
《池塘边的叫声》教学反思
2014/04/12 职场文书
环保建议书100字
2014/05/14 职场文书
小学生春游活动方案
2014/08/20 职场文书
万能检讨书2000字
2014/10/17 职场文书
交通安全月活动总结
2015/05/08 职场文书
高三毕业感言
2015/07/30 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang