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 相关文章推荐
jquery聚焦文本框与扩展文本框聚焦方法
Oct 12 Javascript
通过Jquery的Ajax方法读取将table转换为Json
May 31 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
JS实现4位随机验证码
Oct 19 Javascript
vue3.0中友好使用antdv示例详解
Jan 05 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查询域名状态whois的类
2006/11/25 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
js href的用法
2010/05/13 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
原生js开发的日历插件
2017/02/04 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
金士达面试非笔试
2012/03/14 面试题
企业总经理岗位职责
2014/02/13 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
公司员工离职证明书
2014/10/04 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
考察邀请函范文
2015/01/31 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
辞职信怎么写
2015/02/27 职场文书
博士导师推荐信
2015/03/25 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS