+++ /dev/null
-/*\r
-xml2json v 1.1\r
-copyright 2005-2007 Thomas Frank\r
-\r
-This program is free software under the terms of the \r
-GNU General Public License version 2 as published by the Free \r
-Software Foundation. It is distributed without any warranty.\r
-*/\r
-\r
-var xml2json={ \r
- parser:function(xmlcode,ignoretags,debug){\r
- if(!ignoretags){ignoretags=""};\r
- xmlcode=xmlcode.replace(/\s*\/>/g,'/>');\r
- xmlcode=xmlcode.replace(/<\?[^>]*>/g,"").replace(/<\![^>]*>/g,"");\r
- if (!ignoretags.sort){ignoretags=ignoretags.split(",")};\r
- var x=this.no_fast_endings(xmlcode);\r
- x=this.attris_to_tags(x);\r
- x=escape(x);\r
- x=x.split("%3C").join("<").split("%3E").join(">").split("%3D").join("=").split("%22").join("\"");\r
- for (var i=0;i<ignoretags.length;i++){\r
- x=x.replace(new RegExp("<"+ignoretags[i]+">","g"),"*$**"+ignoretags[i]+"**$*");\r
- x=x.replace(new RegExp("</"+ignoretags[i]+">","g"),"*$***"+ignoretags[i]+"**$*")\r
- };\r
- x='<JSONTAGWRAPPER>'+x+'</JSONTAGWRAPPER>';\r
- this.xmlobject={};\r
- var y=this.xml_to_object(x).jsontagwrapper;\r
- if(debug){y=this.show_json_structure(y,debug)};\r
- return y\r
- },\r
- xml_to_object:function(xmlcode){\r
- var x=xmlcode.replace(/<\//g,"§");\r
- x=x.split("<");\r
- var y=[];\r
- var level=0;\r
- var opentags=[];\r
- for (var i=1;i<x.length;i++){\r
- var tagname=x[i].split(">")[0];\r
- opentags.push(tagname);\r
- level++\r
- y.push(level+"<"+x[i].split("§")[0]);\r
- while(x[i].indexOf("§"+opentags[opentags.length-1]+">")>=0){level--;opentags.pop()}\r
- };\r
- var oldniva=-1;\r
- var objname="this.xmlobject";\r
- for (var i=0;i<y.length;i++){\r
- var preeval="";\r
- var niva=y[i].split("<")[0];\r
- var tagnamn=y[i].split("<")[1].split(">")[0];\r
- tagnamn=tagnamn.toLowerCase();\r
- var rest=y[i].split(">")[1];\r
- if(niva<=oldniva){\r
- var tabort=oldniva-niva+1;\r
- for (var j=0;j<tabort;j++){objname=objname.substring(0,objname.lastIndexOf("."))}\r
- };\r
- objname+="."+tagnamn;\r
- var pobject=objname.substring(0,objname.lastIndexOf("."));\r
- if (eval("typeof "+pobject) != "object"){preeval+=pobject+"={value:"+pobject+"};\n"};\r
- var objlast=objname.substring(objname.lastIndexOf(".")+1);\r
- var already=false;\r
- for (k in eval(pobject)){if(k==objlast){already=true}};\r
- var onlywhites=true;\r
- for(var s=0;s<rest.length;s+=3){\r
- if(rest.charAt(s)!="%"){onlywhites=false}\r
- };\r
- if (rest!="" && !onlywhites){\r
- if(rest/1!=rest){\r
- rest="'"+rest.replace(/\'/g,"\\'")+"'";\r
- rest=rest.replace(/\*\$\*\*\*/g,"</");\r
- rest=rest.replace(/\*\$\*\*/g,"<");\r
- rest=rest.replace(/\*\*\$\*/g,">")\r
- }\r
- } \r
- else {rest="{}"};\r
- if(rest.charAt(0)=="'"){rest='unescape('+rest+')'};\r
- if (already && !eval(objname+".sort")){preeval+=objname+"=["+objname+"];\n"};\r
- var before="=";after="";\r
- if (already){before=".push(";after=")"};\r
- var toeval=preeval+objname+before+rest+after;\r
- eval(toeval);\r
- if(eval(objname+".sort")){objname+="["+eval(objname+".length-1")+"]"};\r
- oldniva=niva\r
- };\r
- return this.xmlobject\r
- },\r
- show_json_structure:function(obj,debug,l){\r
- var x='';\r
- if (obj.sort){x+="[\n"} else {x+="{\n"};\r
- for (var i in obj){\r
- if (!obj.sort){x+=i+":"};\r
- if (typeof obj[i] == "object"){\r
- x+=this.show_json_structure(obj[i],false,1)\r
- }\r
- else {\r
- if(typeof obj[i]=="function"){\r
- var v=obj[i]+"";\r
- //v=v.replace(/\t/g,"");\r
- x+=v\r
- }\r
- else if(typeof obj[i]!="string"){x+=obj[i]+",\n"}\r
- else {x+="'"+obj[i].replace(/\'/g,"\\'").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r")+"',\n"}\r
- }\r
- };\r
- if (obj.sort){x+="],\n"} else {x+="},\n"};\r
- if (!l){\r
- x=x.substring(0,x.lastIndexOf(","));\r
- x=x.replace(new RegExp(",\n}","g"),"\n}");\r
- x=x.replace(new RegExp(",\n]","g"),"\n]");\r
- var y=x.split("\n");x="";\r
- var lvl=0;\r
- for (var i=0;i<y.length;i++){\r
- if(y[i].indexOf("}")>=0 || y[i].indexOf("]")>=0){lvl--};\r
- tabs="";for(var j=0;j<lvl;j++){tabs+="\t"};\r
- x+=tabs+y[i]+"\n";\r
- if(y[i].indexOf("{")>=0 || y[i].indexOf("[")>=0){lvl++}\r
- };\r
- if(debug=="html"){\r
- x=x.replace(/</g,"<").replace(/>/g,">");\r
- x=x.replace(/\n/g,"<BR>").replace(/\t/g," ")\r
- };\r
- if (debug=="compact"){x=x.replace(/\n/g,"").replace(/\t/g,"")}\r
- };\r
- return x\r
- },\r
- no_fast_endings:function(x){\r
- x=x.split("/>");\r
- for (var i=1;i<x.length;i++){\r
- var t=x[i-1].substring(x[i-1].lastIndexOf("<")+1).split(" ")[0];\r
- x[i]="></"+t+">"+x[i]\r
- } ;\r
- x=x.join("");\r
- return x\r
- },\r
- attris_to_tags: function(x){\r
- var d=' ="\''.split("");\r
- x=x.split(">");\r
- for (var i=0;i<x.length;i++){\r
- var temp=x[i].split("<");\r
- for (var r=0;r<4;r++){temp[0]=temp[0].replace(new RegExp(d[r],"g"),"_jsonconvtemp"+r+"_")};\r
- if(temp[1]){\r
- temp[1]=temp[1].replace(/'/g,'"');\r
- temp[1]=temp[1].split('"');\r
- for (var j=1;j<temp[1].length;j+=2){\r
- for (var r=0;r<4;r++){temp[1][j]=temp[1][j].replace(new RegExp(d[r],"g"),"_jsonconvtemp"+r+"_")}\r
- };\r
- temp[1]=temp[1].join('"')\r
- };\r
- x[i]=temp.join("<")\r
- };\r
- x=x.join(">");\r
- x=x.replace(/ ([^=]*)=([^ |>]*)/g,"><$1>$2</$1");\r
- x=x.replace(/>"/g,">").replace(/"</g,"<");\r
- for (var r=0;r<4;r++){x=x.replace(new RegExp("_jsonconvtemp"+r+"_","g"),d[r])} ;\r
- return x\r
- }\r
-};\r
-\r
-\r
-if(!Array.prototype.push){\r
- Array.prototype.push=function(x){\r
- this[this.length]=x;\r
- return true\r
- }\r
-};\r
-\r
-if (!Array.prototype.pop){\r
- Array.prototype.pop=function(){\r
- var response = this[this.length-1];\r
- this.length--;\r
- return response\r
- }\r
-};\r
-\r