通过JS解析XML字符串

IE跟FireFox都有一个onload()方法来加载XML文件,而加载XML字符串时,IE下有onloadXML()方法,FireFox下并没有此方法,所以FireFox下要将XML字符串解析成DOM对象,必须使用DOMParser对象
domParser = new  DOMParser();
xmlDoc 
= domParser.parseFromString(xmlString, 'text/xml');

解释下两个参数:第一个是xml字符串内容,第二个是要解析的XML标记参数contentType文本的内容类型

下面做了一个小例题来加以说明


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
 
<HEAD>
  
<TITLE> New Document </TITLE>
  
<META NAME="Generator" CONTENT="EditPlus">
  
<META NAME="Author" CONTENT="">
  
<META NAME="Keywords" CONTENT="">
  
<META NAME="Description" CONTENT="">
  
<script type='text/javascript'>
    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;
    }

    
//对xml对象进行判断
    checkXMLDocObj = function(xmlString){
        var xmlDoc 
= loadXML(xmlString);
        
if(xmlDoc==null){
            alert(
'您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
            
//window.location.href='某某地址(比如首页)';
        }
        
return xmlDoc;
    }
    
    
//参数1:控件id号,参数2:理解为定位节点
    initializeSelect = function(oid,xPath){
        var xmlstr
="<?xml version=\"1.0\" encoding=\"utf-8\"?><DongFang><Company><cNname>1</cNname><cIP>1</cIP></Company><Company><cNname>2</cNname><cIP>2</cIP></Company><Company><cNname>3</cNname><cIP>3</cIP></Company><Company><cNname>4</cNname><cIP>4</cIP></Company><Company><cNname>5</cNname><cIP>5</cIP></Company> <Company><cNname>6</cNname><cIP>6</cIP></Company></DongFang>";
        var xmlDoc 
= checkXMLDocObj(xmlstr);
        var n;
        var l;
        var e 
= document.getElementById(oid);//得到下拉列表框控件
        if(e!=null){
            n 
= xmlDoc.getElementsByTagName(xPath);
            l 
= n.length;
            
//循环添加列表子项
            for(var i=0;i<l;i++){
                e.options.add(
new Option(n[i].getElementsByTagName("cNname")[0].firstChild.nodeValue, n[i].getElementsByTagName("cIP")[0].firstChild.nodeValue));
            }
        }
    }
  
</script>
 
</HEAD>

 
<BODY onload="initializeSelect('company','Company')">
  
<select id='company' name='company' onChange='showValue()'>
    
<option selected='selected'></option>
  
</select>
 
</BODY>
</HTML>
原文地址:https://www.cnblogs.com/ggbbeyou/p/1441658.html