/** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r"); while(i > -1){ prefix = str.substring(0, i); suffix = $.trim(str.substring(i, str.length)); str = prefix + suffix; i = str.indexOf("\r"); } i = str.indexOf("\n"); while(i > -1){ prefix = str.substring(0, i); suffix = $.trim(str.substring(i, str.length)); str = prefix + suffix; i = str.indexOf("\n"); } return str; }
/** * 将xml字符串转换为xml对象 */ function stringToXml(xmlString) { var xmlDoc; if (typeof xmlString == "string") { if (document.implementation.createDocument) { var parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlString, "text/xml"); } else if (window.ActiveXObject) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.loadXML(xmlString); } } else { xmlDoc = xmlString; } return xmlDoc; }
/** * 将xml对象转换为json对象 */ function xmlToJson(xml){ // Create the return object var obj = {}; if (xml.nodeType == 1) { // element // do attributes if (xml.attributes.length > 0) { obj["@attributes"] = {}; for ( var j = 0; j < xml.attributes.length; j++) { var attribute = xml.attributes.item(j); obj["@attributes"][attribute.nodeName] = attribute.nodeValue; } } } else if (xml.nodeType == 3) { // text obj = xml.nodeValue; } // do children if (xml.hasChildNodes()) { for ( var i = 0; i < xml.childNodes.length; i++) { var item = xml.childNodes.item(i); var nodeName = item.nodeName; if (typeof (obj[nodeName]) == "undefined") { if(nodeName == "#text"){ obj = xmlToJson(item); }else{ obj[nodeName] = xmlToJson(item); } } else { if (typeof (obj[nodeName].length) == "undefined") { var old = obj[nodeName]; obj[nodeName] = []; obj[nodeName].push(old); } obj[nodeName].push(xmlToJson(item)); } } } return obj; }