js json转xml(可自定义属性,区分大小写)

直接上代码~

在网上找了很多例子,大多数不适用,而且麻烦,自己进行了一些调整,完成了一个可以区分大小写的json转xml的小功能~

 

功能实现js:

    function CreatXmlDoc(obj){this.tagName=obj.tagName;this.properties = obj.properties;var children=obj.children.map(function(item){if(typeof item =="object"){item=new CreatXmlDoc(item)}return item})this.children=children;}function loadXMLDoc(dname) {try {//Internet ExplorerxmlDoc = new ActiveXObject("Microsoft.XMLDOM");} catch(e) {try {//Firefox, Mozilla, Opera, etc.xmlDoc = document.implementation.createDocument("", "", null);} catch(e) {alert(e.message)}}return xmlDoc;}CreatXmlDoc.prototype.render=function(){xmlDoc = loadXMLDoc();var xe1 = xmlDoc.createElement(this.tagName);for(var p in this.properties){xe1.setAttribute(p, this.properties[p]);}var children=this.children || [];children.forEach(function(child){var childEl=(child instanceof CreatXmlDoc)? child.render():xmlDoc.createTextNode(child)xe1.appendChild(childEl);})return xe1;}


// 封装调用函数
// 将json转成xml文档,再转成字符串
var xmlToString = function(eleJson) {var doc=new CreatXmlDoc(eleJson);SetupSerial=(new XMLSerializer()).serializeToString(doc.render());var reg = new RegExp(' xmlns="http://www.w3.org/1999/xhtml"',"g");// 替换转义字符var reg1 = new RegExp('&lt;',"g"); // <var reg2 = new RegExp('&gt;',"g"); // >var reg3 = new RegExp('&amp;',"g"); // &var reg4 = new RegExp('&apos;',"g"); // 'var reg5 = new RegExp('&quot;',"g"); // "SetupSerial=SetupSerial.replace(reg,"").replace(reg1, "<").replace(reg2, ">").replace(reg3, "&").replace(reg4, "'").replace(reg5, '"');return SetupSerial; }


 

准备工作完成后就可以使用了!

 

示例:

 

var obj={tagName:'Setup',properties:{type:"text",name:"hahha",title:"哈哈"},children:[{tagName:'ProtocolList',children:[{tagName:'Protocol',children:[{tagName:'Name',children:["onvif"]}, {tagName:'UserName',children:["admin"]}, {tagName:'PassWord',children:["admin"]}, {tagName:'Port',children:["8000"]}, {tagName:'MediaPort',children:["8000"]}, ]},{tagName:'Protocol',children:[{tagName:'Name',children:["onvif"]}, {tagName:'UserName',children:["admin"]}, {tagName:'PassWord',children:["admin"]}, {tagName:'Port',children:["8000"]}, {tagName:'MediaPort',children:["8000"]}, ]},{tagName:'Protocol',children:[{tagName:'Name',children:["onvif"]}, {tagName:'UserName',children:["admin"]}, {tagName:'PassWord',children:["admin"]}, {tagName:'Port',children:["8000"]}, {tagName:'MediaPort',children:["8000"]}, ]},              ]},{tagName:'Function',children:[{tagName:'PlayBack',children:["onvif"]             },{tagName:'Other',children:["rtsp"] }]}]}SetupSerial = xmlToString(obj);
console.log(SetupSerial);

 

输出结果:

<Setup type="text" name="hahha" title="哈哈"><ProtocolList><Protocol><Name>onvif</Name><UserName>admin</UserName><PassWord>admin</PassWord><Port>8000</Port><MediaPort>8000</MediaPort></Protocol><Protocol><Name>onvif</Name><UserName>admin</UserName><PassWord>admin</PassWord><Port>8000</Port><MediaPort>8000</MediaPort></Protocol><Protocol><Name>onvif</Name><UserName>admin</UserName><PassWord>admin</PassWord><Port>8000</Port><MediaPort>8000</MediaPort></Protocol></ProtocolList><Function><PlayBack>onvif</PlayBack><Other>rtsp</Other></Function>
</Setup>

 

大功告成!

 

转载于:https://www.cnblogs.com/zh-1721342390/p/9894731.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql安装主从配置_MySQL安装与主从配置

我是ssh远程 配置的&#xff1b;略微有些不同&#xff0c;大家自己斟酌。1.安装MySQLsudo yum install mysql mysql-server sudo chgrp -R mysql /var/我是ssh远程 配置的&#xff1b;略微有些不同&#xff0c;大家自己斟酌。1.安装MySQLsudo yum install mysql mysql-serversu…

STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置

摘自&#xff1a;STM32F103五分钟入门系列&#xff08;二&#xff09;GPIO的七大寄存器GPIOx_LCKR作用和配置 作者&#xff1a;自信且爱笑‘ 发布时间&#xff1a; 2021-05-01 12:08:32 网址&#xff1a;https://blog.csdn.net/Curnane0_0/article/details/116276876?spm1001.…

CTR点击率简介

点击率 简介 在搜索引擎(百度、谷歌)中输入关键词后进行搜索&#xff0c;然后按竞价等因素把相关的网页按顺序进行排列出来&#xff0c;然后用户会选择自己感兴趣的网站点击进去&#xff1b;把一个网站所有搜索出来的次数作为总次数&#xff0c;把用户点击并进入网站的次数占总…

算法第三章作业

算法第三章作业 1.对动态规划算法的理解 求解的方式有两种&#xff1a;①自顶向下的备忘录法 ②自底向上。 动态规划是运筹学中用于求解决策过程中的最优化数学方法。 动态规划最重要的是子问题的求解&#xff0c;在求解任一子问题时&#xff0c;列出各种可能的局部解&#xf…

python中的命名空间指什么_13.Python中的命名空间是什么

Python中的命名空间是什么&#xff1f;In Python&#xff0c;every name introduced has a place where it lives and can be hooked for.This is known as namespace. It is like a box where a variable name is mapped to the object placed.Whenever the variable is searc…

STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、图像(硬件IIC)

参考&#xff1a;基于STM32-Oled&#xff08;IIC&#xff09;的使用 作者&#xff1a;奋斗的小殷 发布时间&#xff1a; 2021-05-07 13:09:26 网址&#xff1a;https://blog.csdn.net/boybs/article/details/116465668 目录IIC总线简介IIC协议简介IIC总线系统结构IIC总线物理层…

mysql语句笔记

1、mysql多重查询select * from a_table ORDER BY b,c asc limit 1, 10;(对表a_table中的字段b降序排列&#xff0c;得到的结果再按字段c降序排列&#xff0c;最后取前10条数据)转载于:https://blog.51cto.com/jemary/1303093

推送公司今日菜单内容到手机

此文已由作者张耕源授权网易云社区发布。欢迎访问网易云社区&#xff0c;了解更多网易技术产品运营经验。自从公司的易信公众服务号有了查询今日菜单的功能&#xff0c;自己慢慢养成了每次去吃饭前查一 下各个窗口的菜谱&#xff0c;再决定去哪吃饭的习惯。不过这个功能使用的越…

Android开发中如何创建自定义对话框

背景&#xff1a; 无论是Android&#xff0c;还是其他什么平台&#xff0c;对话框的主要形式都是弹出&#xff0c;或者我们可以说是一个在当前活动中打开的提示&#xff0c;来执行一些操作或实现一些功能。 你可以用一个对话框来问用户以确认一个行动&#xff0c;向用户通告一个…

mysql创建新表失败_麻烦给我看一下为什么MySQL创建表格失败嘛

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼改为$conmysql_connect(localhost,root,);if(!$con)die(连接数据库失败);mysql_select_db(comment_db,$con);$mysql_sql"create table comment_tab(id mediumint unsigned NOT NULL auto_increment,nickname char(16) NOT NUL…

树莓派接入公网(花生壳)

参考&#xff1a;树莓派接入公网 作者&#xff1a;图触靓 发布时间&#xff1a; 2020-12-22 17:28:19 网址&#xff1a;https://blog.csdn.net/bhbhhyg/article/details/107994829 目录为什么要接入公网接入公网的方法&#xff08;花生壳&#xff09;1、下载工具huashenke2、安…

洛谷 题解 P2312 【解方程】

Problem P2312 【解方程】 >>> record 用时&#xff1a; 1166ms空间&#xff1a; 780KB(0.76MB)代码长度&#xff1a; 2.95KB提交记录&#xff1a; R9909587 >>>注&#xff1a; 使用了 o1 优化o2 优化o3 优化快读快输 >>>Solution 30 pts 枚举&…

python列表遍历 空列表_Python list列表执行reversed()后执行pop()返回迭代对象遍历为空问题...

1、示例代码1)一般情况s [1,2,3]t reversed(s)for i in t:print(i)# 输出: 3,2,12) 执行pop()s [1,2,3]t reversed(s)s.pop()for i in t:print(i)# 期望输出 : 2, 1# 实际什么都没输出:2、问题原因及示例代码返回的迭代器本质上需要知道最后一个索引的位置和列表的长度。如…

cant find module express

安装express成功&#xff0c;测试一个应用如下&#xff1a;但是&#xff0c;运行却报错&#xff0c;如下图&#xff1a;说是express找不到&#xff0c;不应该啊&#xff01;命令都能用啊&#xff01;表面的原因是因为我install express用的是-g。参考链接如下&#xff1a;http:…

Linux虚拟机sqlite数据库安装教程、命令实现sqlite

参考&#xff1a;Linux虚拟机sqlite数据库安装教程 作者&#xff1a;图触靓 发布时间&#xff1a; 2021-04-08 19:07:56 网址&#xff1a;https://blog.csdn.net/bhbhhyg/article/details/115528254 一、在官网下载压缩包到window里面 SQLite官网下载地址 如图我们下载sqlite-a…

SecureCRT 使用 rz命令提示waiting to receive.**B0100000023be50

SecureCRT 远程连接Linux服务器&#xff0c;使用 rz命令提示waiting to receive.**B0100000023be50&#xff0c;或者使用sz命令提示&#xff1a; **B0100000023be50 解决方法设置如下&#xff1a; 转载于:https://www.cnblogs.com/pandaly/p/9898173.html

C语言面试高频问题:自己代码实现字符串相关的常用API

参考&#xff1a;C语言面试高频问题&#xff1a;自己代码实现字符串相关的常用API 作者&#xff1a;图触靓 发布时间&#xff1a; 2020-08-08 13:31:33 网址&#xff1a;https://blog.csdn.net/bhbhhyg/article/details/107878102 目录1、实现get(char *)&#xff1b;从键盘获取…

Python时间复杂度计算题答案

评论 题目链接 https://blog.csdn.net/qq_33254766/article/details/132255078 答案 时间复杂度&#xff1a;O(n)。 分析&#xff1a;这段代码遍历了n次&#xff0c;所以时间复杂度是线性的&#xff0c;即O(n)。 时间复杂度&#xff1a;O(n^2)。 分析&#xff1a;两个嵌套的…

【性能优化】优化笔记之一:图像RGB与YUV转换优化

本文主要介绍如何优化您自己的CODE&#xff0c;实现软件的加速。我们一个图象模式识别的项目&#xff0c;需要将RGB格式的彩色图像先转换成黑白图像。图像转换的公式如下&#xff1a; Y 0.299 * R 0.587 * G 0.114 * B 图像尺寸640*480*24bit&#xff0c;RGB图像已经按照RGB…

wxpython使用方法_python图形界面开发之wxPython树控件使用方法详解

wxPython树控件介绍树(tree)是一种通过层次结构展示信息的控件&#xff0c;如下图所示是树控件示例&#xff0c;左窗口中是树控件&#xff0c;在wxPython中树控件类是wx.TreeCtrl。wx.TreeCtrl常用的方法有AddRoot(text, image-1, selImage-1, dataNone)。添加根节点&#xff0…