function xml2jso(xml,tab){var X={toObj:function(xml){var o={};if(xml.nodeType==1){if(xml.attributes.length) for(var i=0;i1) o=X.escape(X.innerXml(xml));else for(var n=xml.firstChild;n;n=n.nextSibling) o["#cdata"]=X.escape(n.nodeValue);}} if(!xml.attributes.length&&!xml.firstChild)o=null;} else if(xml.nodeType==9){o=X.toObj(xml.documentElement);} else alert("unhandled node type: "+xml.nodeType);return o;},toJson:function(o,name,ind){var json=name?("\""+name+"\""):"";if(o instanceof Array){for(var i=0,n=o.length;i1?("\n"+ind+"\t"+o.join(",\n"+ind+"\t")+"\n"+ind):o.join(""))+"]";} else if(o==null) json+=(name&&":")+"null";else if(typeof(o)=="object"){var arr=[];for(var m in o) arr[arr.length]=X.toJson(o[m],m,ind+"\t");json+=(name?":{":"{")+(arr.length>1?("\n"+ind+"\t"+arr.join(",\n"+ind+"\t")+"\n"+ind):arr.join(""))+"}";} else if(typeof(o)=="string") json+=(name&&":")+"\""+o.toString()+"\"";else json+=(name&&":")+o.toString();return json;},innerXml:function(node){var s="" if("innerHTML"in node) s=node.innerHTML;else{var asXml=function(n){var s="";if(n.nodeType==1){s+="<"+n.nodeName;for(var i=0;i";for(var c=n.firstChild;c;c=c.nextSibling) s+=asXml(c);s+="";} else s+="/>";} else if(n.nodeType==3) s+=n.nodeValue;else if(n.nodeType==4) s+="";return s;};for(var c=node.firstChild;c;c=c.nextSibling) s+=asXml(c);} return s;},escape:function(txt){return txt.replace(/[\\]/g,"\\\\").replace(/[\"]/g,'\\"').replace(/[\n]/g,'\\n').replace(/[\r]/g,'\\r');},removeWhite:function(e){e.normalize();for(var n=e.firstChild;n;){if(n.nodeType==3){if(!n.nodeValue.match(/[^ \f\n\r\t\v]/)){var nxt=n.nextSibling;e.removeChild(n);n=nxt;} else n=n.nextSibling;} else if(n.nodeType==1){X.removeWhite(n);n=n.nextSibling;} else n=n.nextSibling;} return e;}};if(xml.nodeType==9) xml=xml.documentElement;return X.toObj(X.removeWhite(xml));}