js转换对象为xml

发布时间 - 2026-01-10 23:07:40    点击率:

本代码解决这两个问题:

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>

此转换代码有使用限制

对象中值为数组的字段名最好不要一样

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 转换  # xml  # 详解XML  # Object  # Json转换与Xstream的使用  # Python 提取dict转换为xml/json/table并输出的实现代码  # 如何在JS中实现相互转换XML和JSON  # php实现xml与json之间的相互转换功能实例  # C#中使用JSON.NET实现JSON、XML相互转换  # JavaScript实现将xml转换成html table表格的方法  # C# XML与Json之间相互转换实例详解  # js字符串转换成xml对象并使用技巧解读  # Jsp结合XML+XSLT将输出转换为Html格式  # 这两个  # 时要  # 值为  # 象中  # 字段名  # _self  # XmlHelper  # function  # _arrayTypes  # obj  # typeof  # undefined  # Array  # rootname  # arraytypes  # parseToXML  # var  # color  # ff 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  如何在局域网内绑定自建网站域名?  Laravel如何为API生成Swagger或OpenAPI文档  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  中山网站推广排名,中山信息港登录入口?  Android实现代码画虚线边框背景效果  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  怎样使用JSON进行数据交换_它有什么限制  想要更高端的建设网站,这些原则一定要坚持!  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何用花生壳三步快速搭建专属网站?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  再谈Python中的字符串与字符编码(推荐)  千库网官网入口推荐 千库网设计创意平台入口  Laravel如何实现事件和监听器?(Event & Listener实战)  简历没回改:利用AI润色让你的文字更专业  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Python3.6正式版新特性预览  如何用美橙互联一键搭建多站合一网站?  如何在建站之星网店版论坛获取技术支持?  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel怎么实现模型属性的自动加密  如何在阿里云完成域名注册与建站?  Laravel怎么清理缓存_Laravel optimize clear命令详解  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  网站制作壁纸教程视频,电脑壁纸网站?  如何用腾讯建站主机快速创建免费网站?  网站优化排名时,需要考虑哪些问题呢?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何集成Inertia.js与Vue/React?(安装配置)  微信小程序 scroll-view组件实现列表页实例代码  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何用好域名打造高点击率的自主建站?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  javascript中对象的定义、使用以及对象和原型链操作小结  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  iOS中将个别页面强制横屏其他页面竖屏  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  如何快速生成橙子建站落地页链接?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)