js json转xml(可自定义属性,区分大小写)
生活随笔
收集整理的這篇文章主要介紹了
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('<',"g"); // <var reg2 = new RegExp('>',"g"); // >var reg3 = new RegExp('&',"g"); // &var reg4 = new RegExp(''',"g"); // 'var reg5 = new RegExp('"',"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
總結
以上是生活随笔為你收集整理的js json转xml(可自定义属性,区分大小写)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动打包_全自动打包机行业发展如何?全自
- 下一篇: c++语言坦克大战源代码,C++代码之坦