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 相关文章推荐
js之onload事件的一点使用心得
Aug 14 Javascript
Javascript函数式编程语言
Oct 11 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
jquery点击切换背景色的简单实例
Aug 25 Javascript
jquery validate表单验证插件
Sep 06 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 Javascript
轻松理解Javascript变量的相关问题
Jan 20 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
解决vue项目本地启动时无法携带cookie的问题
Feb 06 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
第十五节--Zend引擎的发展
2006/11/16 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Python tcp传输代码实例解析
2020/03/18 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
大专生简历的自我评价
2013/11/26 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
婚育证明样本
2015/06/16 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫