第一种方案(最稳妥):
先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象
var returnDataXml = parseXML(returnData);
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");
}
function parseXML (xmlStr) {
if(typeof($.browser)== "undefined"){
if (!!navigator.userAgent.match(/Trident\/7\./)){// IE11
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlStr);
}else{
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlStr, "text/xml");
}
}else{
if($.browser.msie){// IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlStr);
}else{// Other
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlStr, "text/xml");
}
}
return xmlDoc;
}
第二种方案:
直接使用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>