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 相关文章推荐
关于hashchangebroker和statehashable的补充文档
Aug 08 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
JS小功能(button选择颜色)简单实例
Nov 29 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
jquery实现列表上下移动功能
Feb 25 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
Apr 05 Javascript
Vue实现简单分页器
Dec 29 Javascript
浅谈在Vue.js中如何实现时间转换指令
Jan 06 Javascript
js 计算图片内点个数的示例代码
Apr 04 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
Python字符遍历的艺术
2008/09/06 Python
Python中的列表知识点汇总
2015/04/14 Python
说一说Python logging
2016/04/15 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
Django的性能优化实现解析
2019/07/30 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
行政办公员自我评价分享
2013/12/14 职场文书
志愿者事迹材料
2014/12/26 职场文书
婚庆答谢词
2015/01/04 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
学校实习推荐信
2015/03/27 职场文书
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技