JavaScript 解析xml字符串
续js解析xml文件,下面笔记是js解析xml字符串与文件的不同
loadXML = function(xmlString){
var xmlDoc=null;
//判断浏览器的类型
//支持IE浏览器
if(!window.DOMParser && window.ActiveXObject){ //window.DOMParser 判断是否是非ie浏览器
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
for(var i=0;i<xmlDomVersions.length;i++){
try{
xmlDoc = new ActiveXObject(xmlDomVersions[i]);
xmlDoc.async = false;
xmlDoc.loadXML(xmlString); //注!loadXML方法载入xml字符串,不同处
break;
}catch(e){
}
}
}
//支持Mozilla浏览器
else if(window.DOMParser && document.implementation && document.implementation.createDocument){
try{
/* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
* 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
* parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
* 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
*/
domParser = new DOMParser();
xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
}catch(e){
}
}
else{
return null;
}
return xmlDoc;
}
getXmlContent = function(xmlstr,xPath){
var xmlStr=xmlstr;
var xmlDoc = loadXML(xmlStr);
var n;
var l;
if(xmlDoc!=null){
n = xmlDoc.getElementsByTagName(xPath);
l = n.length;
//循环添加列表子项
for(var i=0;i<l;i++){
document.write(n[i].childNodes[0].firstChild.nodeValue);
document.write("<br />");
document.write(n[i].getElementsByTagName("grade")[0].firstChild.nodeValue);
document.write("<br />");
document.write(n[i].getElementsByTagName("ranklist")[0].firstChild.nodeType);
}
}
}