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 相关文章推荐
解决表单中第一个非隐藏的元素获得焦点的一个方案
Oct 26 Javascript
javascript的console.log()用法小结
May 31 Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
Mar 22 Javascript
js匿名函数作为函数参数详解
Jun 01 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
Bootstrap风格的WPF样式
Dec 07 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
详解vue-router数据加载与缓存使用总结
Oct 29 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
JavaScript中的this基本问题实例小结
Mar 09 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 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脚本中include文件出错解决方法
2008/11/20 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python 将md5转为16字节的方法
2018/05/29 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
softmax及python实现过程解析
2019/09/30 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
日语翻译个人求职的自我评价
2013/10/14 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL