js转换对象为xml

 更新时间:2017年02月17日 14:44:12   转载 作者:lopcomvir  
本文主要介绍了js转换对象为xml的方法。具有很好的参考价值,下面跟着小编一起来看下吧

本代码解决这两个问题:

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 10件让人费解的事情

    JavaScript 10件让人费解的事情

    JavaScript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言,如今越来越被重视,虽则如此,JavaScript 仍然拥有很多让人费解的东西。
    2010-02-02
  • 基于JavaScript实现动态添加删除表格的行

    基于JavaScript实现动态添加删除表格的行

    又一个动态控制表格的效果,用JavaScript动态生成表格行、表格列,以及还可动态删除这些行列,行等,运行代码后,点击对应的功能按钮,即可实现对应的表格操作功能,接下来通过代码实例给大家介绍JavaScript实现动态添加删除表格的行,需要的朋友参考下
    2016-02-02
  • React中ES5与ES6写法的区别总结

    React中ES5与ES6写法的区别总结

    这篇文章主要总结介绍了关于React中ES5与ES6的写法区别,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • 在webstorm开发微信小程序之使用阿里自定义字体图标的方法

    在webstorm开发微信小程序之使用阿里自定义字体图标的方法

    这篇文章主要介绍了在webstorm开发微信小程序之使用阿里自定义字体图标 的相关资料,需要的朋友可以参考下
    2018-11-11
  • BootStrap 弹出层代码

    BootStrap 弹出层代码

    这篇文章主要介绍了BootStrap 弹出层代码的相关资料,非常补充,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • JavaScript实现复制或剪切内容到剪贴板功能的方法

    JavaScript实现复制或剪切内容到剪贴板功能的方法

    这篇文章主要介绍了JavaScript实现复制或剪切内容到剪贴板功能的方法,我们平时看到的网页上很多一键复制功能就是如此实现,需要的朋友可以参考下
    2016-05-05
  • js 设置选中行的样式的实现代码

    js 设置选中行的样式的实现代码

    设置选中的行样式的js代码,需要的朋友可以参考下,这里只给出了函数,具体的自己发挥。
    2010-05-05
  • 浅谈JavaScript 的执行顺序

    浅谈JavaScript 的执行顺序

    JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的执行顺序,那你就犹如伯乐驾驭不了千里马
    2015-08-08
  • 页面中body onload 和 window.onload 冲突的问题的解决

    页面中body onload 和 window.onload 冲突的问题的解决

    关于页面中body onload 和 window.onload 冲突的问题的解决
    2009-07-07
  • JS查找数组中重复元素的方法详解

    JS查找数组中重复元素的方法详解

    这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历、判断、排序等相关操作技巧,需要的朋友可以参考下
    2017-06-06

最新评论