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 判断中文字符长度的函数代码
Aug 27 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 Javascript
JS中生成随机数的用法及相关函数
Jan 09 Javascript
jQuery简单设置文本框回车事件的方法
Aug 01 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
Apr 04 jQuery
js 中rewrap-ajax.js插件实例代码
Oct 20 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
Sep 12 Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
页面乱码问题的根源及其分析
2013/08/09 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python探索之SocketServer详解
2017/10/28 Python
Python OS模块实例详解
2019/04/15 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
详解Python IO编程
2020/07/24 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
军训自我鉴定范文
2014/02/13 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
2015年女工委工作总结
2015/07/27 职场文书
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python