第一种方案(最稳妥):
先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象
1 var returnDataXml = parseXML(returnData); 2 var param = $(returnDataXml).find("param"); 3 for(i=0;i<param .length;i++){ 4 var paramName = $(param[i]).attr("name"); 5 var rDescription = $(param[i]).attr("rDescription"); 6 var format = $(param [i]).attr("format"); 7 } 8 9 function parseXML (xmlStr) { 10 if(typeof($.browser)== "undefined"){ 11 if (!!navigator.userAgent.match(/Trident\/7\./)){// IE11 12 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 13 xmlDoc.async = "false"; 14 xmlDoc.loadXML(xmlStr); 15 }else{ 16 var parser = new DOMParser(); 17 xmlDoc = parser.parseFromString(xmlStr, "text/xml"); 18 } 19 }else{ 20 if($.browser.msie){// IE 21 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 22 xmlDoc.async = "false"; 23 xmlDoc.loadXML(xmlStr); 24 }else{// Other 25 var parser = new DOMParser(); 26 xmlDoc = parser.parseFromString(xmlStr, "text/xml"); 27 } 28 } 29 return xmlDoc; 30 }
第二种方案:
直接使用Jquery的$.find()解析String格式的xml。
JQUERY可以将一段字符串转成XML的对象,进而可以使用find()方法对该字符串转成的XML进行节点操作。
注意:此方法不适用于IE9以下的IE浏览器。原因在于:IE中解析出来的是text对象。
var param = $(returnDataXml).find("param");
for(i=0;i<param .length;i++){
var paramName = $(param[i]).attr("name");
var rDescription = $(param[i]).attr("rDescription");
var format = $(param [i]).attr("format");
}
returnData的xml:
<params><param name='搜索' orderby='2' format='类型' rDescription='描述'></param></params>