?? jsonxml-min.js
字號:
/*
The below work is licensed under Creative Commons GNU LGPL License.
Original work:
License: http://creativecommons.org/licenses/LGPL/2.1/
Author: Stefan Goessner/2006
Web: http://goessner.net/
*/
var xmlJsonClass={xml2json:function(a,b){if(a.nodeType===9){a=a.documentElement}var f=this.removeWhite(a);var d=this.toObj(f);var g=this.toJson(d,a.nodeName,"\t");return"{\n"+b+(b?g.replace(/\t/g,b):g.replace(/\t|\n/g,""))+"\n}"},json2xml:function(k,o){var m=function(a,b,f){var d="";var g,h;if(a instanceof Array){if(a.length===0){d+=f+"<"+b+">__EMPTY_ARRAY_</"+b+">\n"}else{for(g=0,h=a.length;g<h;g+=1){var j=f+m(a[g],b,f+"\t")+"\n";d+=j}}}else if(typeof(a)==="object"){var c=false;d+=f+"<"+b;var i;for(i in a)if(a.hasOwnProperty(i)){if(i.charAt(0)==="@"){d+=" "+i.substr(1)+"=\""+a[i].toString()+"\""}else{c=true}}d+=c?">":"/>";if(c){for(i in a)if(a.hasOwnProperty(i)){if(i==="#text"){d+=a[i]}else if(i==="#cdata"){d+="<![CDATA["+a[i]+"]]>"}else if(i.charAt(0)!=="@"){d+=m(a[i],i,f+"\t")}}d+=(d.charAt(d.length-1)==="\n"?f:"")+"</"+b+">"}}else if(typeof(a)==="function"){d+=f+"<"+b+"><![CDATA["+a+"]]></"+b+">"}else{if(a.toString()==="\"\""||a.toString().length===0){d+=f+"<"+b+">__EMPTY_STRING_</"+b+">"}else{d+=f+"<"+b+">"+a.toString()+"</"+b+">"}}return d};var n="";var l;for(l in k)if(k.hasOwnProperty(l)){n+=m(k[l],l,"")}return o?n.replace(/\t/g,o):n.replace(/\t|\n/g,"")},parseXml:function(a){var b;try{var f=new DOMParser();b=f.parseFromString(a,"text/xml")}catch(e){b=new ActiveXObject("Microsoft.XMLDOM");b.async=false;b["loadXML"](a)}return(b&&b.documentElement&&b.documentElement.tagName!='parsererror')?b:null},toObj:function(a){var b={};var f=/function/i;if(a.nodeType===1){if(a.attributes.length){var d;for(d=0;d<a.attributes.length;d+=1){b["@"+a.attributes[d].nodeName]=(a.attributes[d].nodeValue||"").toString()}}if(a.firstChild){var g=0,h=0,j=false;var c;for(c=a.firstChild;c;c=c.nextSibling){if(c.nodeType===1){j=true}else if(c.nodeType===3&&c.nodeValue.match(/[^ \f\n\r\t\v]/)){g+=1}else if(c.nodeType===4){h+=1}}if(j){if(g<2&&h<2){this.removeWhite(a);for(c=a.firstChild;c;c=c.nextSibling){if(c.nodeType===3){b["#text"]=this.escape(c.nodeValue)}else if(c.nodeType===4){if(f.test(c.nodeValue)){b[c.nodeName]=[b[c.nodeName],c.nodeValue]}else{b["#cdata"]=this.escape(c.nodeValue)}}else if(b[c.nodeName]){if(b[c.nodeName]instanceof Array){b[c.nodeName][b[c.nodeName].length]=this.toObj(c)}else{b[c.nodeName]=[b[c.nodeName],this.toObj(c)]}}else{b[c.nodeName]=this.toObj(c)}}}else{if(!a.attributes.length){b=this.escape(this.innerXml(a))}else{b["#text"]=this.escape(this.innerXml(a))}}}else if(g){if(!a.attributes.length){b=this.escape(this.innerXml(a));if(b==="__EMPTY_ARRAY_"){b="[]"}else if(b==="__EMPTY_STRING_"){b=""}}else{b["#text"]=this.escape(this.innerXml(a))}}else if(h){if(h>1){b=this.escape(this.innerXml(a))}else{for(c=a.firstChild;c;c=c.nextSibling){if(f.test(a.firstChild.nodeValue)){b=a.firstChild.nodeValue;break}else{b["#cdata"]=this.escape(c.nodeValue)}}}}}if(!a.attributes.length&&!a.firstChild){b=null}}else if(a.nodeType===9){b=this.toObj(a.documentElement)}else{alert("unhandled node type: "+a.nodeType)}return b},toJson:function(a,b,f){var d=b?("\""+b+"\""):"";if(a==="[]"){d+=(b?":[]":"[]")}else if(a instanceof Array){var g,h;for(h=0,g=a.length;h<g;h+=1){a[h]=this.toJson(a[h],"",f+"\t")}d+=(b?":[":"[")+(a.length>1?("\n"+f+"\t"+a.join(",\n"+f+"\t")+"\n"+f):a.join(""))+"]"}else if(a===null){d+=(b&&":")+"null"}else if(typeof(a)==="object"){var j=[];var c;for(c in a)if(a.hasOwnProperty(c)){j[j.length]=this.toJson(a[c],c,f+"\t")}d+=(b?":{":"{")+(j.length>1?("\n"+f+"\t"+j.join(",\n"+f+"\t")+"\n"+f):j.join(""))+"}"}else if(typeof(a)==="string"){var i=/(^-?\d+\.?\d*$)/;var k=/function/i;a=a.toString();if(i.test(a)||k.test(a)||a==="false"||a==="true"){d+=(b&&":")+a}else{d+=(b&&":")+"\""+a+"\""}}else{d+=(b&&":")+a.toString()}return d},innerXml:function(g){var h="";if("innerHTML"in g){h=g.innerHTML}else{var j=function(a){var b="",f;if(a.nodeType===1){b+="<"+a.nodeName;for(f=0;f<a.attributes.length;f+=1){b+=" "+a.attributes[f].nodeName+"=\""+(a.attributes[f].nodeValue||"").toString()+"\""}if(a.firstChild){b+=">";for(var d=a.firstChild;d;d=d.nextSibling){b+=j(d)}b+="</"+a.nodeName+">"}else{b+="/>"}}else if(a.nodeType===3){b+=a.nodeValue}else if(a.nodeType===4){b+="<![CDATA["+a.nodeValue+"]]>"}return b};for(var c=g.firstChild;c;c=c.nextSibling){h+=j(c)}}return h},escape:function(a){return a.replace(/[\\]/g,"\\\\").replace(/[\"]/g,'\\"').replace(/[\n]/g,'\\n').replace(/[\r]/g,'\\r')},removeWhite:function(a){a.normalize();var b;for(b=a.firstChild;b;){if(b.nodeType===3){if(!b.nodeValue.match(/[^ \f\n\r\t\v]/)){var f=b.nextSibling;a.removeChild(b);b=f}else{b=b.nextSibling}}else if(b.nodeType===1){this.removeWhite(b);b=b.nextSibling}else{b=b.nextSibling}}return a}};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -