当前位置:编程学习 > XML/UML >>

利用DOM操作XML

   在使用AJAX时,虽然JSON数据格式简单易用,但是服务器端语言对JSON的支持并不如XML完善,有时候我们需要从后台向前台返回XML数据格式,所以学会javascript怎样利用DOM操作XML是非常有必要的
 
以下为JS利用DOM操作XML的代码
 
1、对XML文档的装载
[javascript]  
function loadXMLDocument(flag,xmlDoc){//flag=true代表XML文档,否则是XML字符串  
    //IE浏览器的装载方法  
    if(window.ActiveXObject){  
        var activeName=['MSXML2.DOMDocument','Microsoft.XmlDom'];  
        var xmlObj;  
        for(var i=0;i<activeName.length;i++){  
            try{  
                xmlObj=new ActiveXObject(activeName[i]);  
                break;  
            }catch(e){    
              
            }  
                  
        }  
          
        //对象创建成功  
        if(xmlObj){  
            //以同步方式装载XML文档  
            xmlObj.async=false;  
            //装载xml文档  
            if(flag){  
                xmlObj.load(xmlDoc);  
            }else{//装载xml字符串  
                xmlObj.loadXML(xmlDoc);  
            }  
              
            //返回根节点对象  
            //return xmlObj;  
            //返回根元素对象  
            return xmlObj.documentElement;  
          
        }else{//对象创建失败    
            alert("XMLDocumnet对象创建失败");  
            return null;  
        }  
          
          
    //FireFox浏览器的装载方法  
    }else if(document.implementation.createDocument){  
        var xmlObj;  
        if(flag){//装载xml文档  
            xmlObj=document.implementation.createDocument("","",null);  
            if(xmlObj){  
                xmlObj.async=false;  
                xmlObj.load(xmlDoc);  
                return xmlObj  
                //return xmlObj.documentElement;      
            }else{  
                alert("创建对象失败");  
                return null;  
            }  
              
        }else{//装载xml字符串  
            xmlObj=new DOMParser();  
            var docRoot=xmlObj.parseFromString(xmlDoc,'text/xml');  
            return docRoot.documentElement;  
        }  
      
    }else{  
        alert("XMLDocumnet对象创建失败");  
        return null;  
    }  
}  
 
2、XML文档装载完成之后,剩下的就是如何利用XPATH技术获取XML中的内容了,在这里通常会用到两个方法:selectNodes()和selectSingleNode()
2.1 selectSingleNode()方法
[javascript]  
function selectSingleNode(xmlDom,sXpath){  
    if(window.ActiveXObject){//IE浏览器  
        return xmlDom.selectSingleNode(sXpath);  
          
    }else if(window.XPathEvaluator){//firefox类浏览器  
        var xpathObj=new XPathEvaluator();  
        if(xpathObj){  
            var result=xpathObj.evaluate(sXpath,xmlDom,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);  
            return result.singleNodeValue;  
        }else{  
            return null;  
        }  
    }else{  
        return null;  
    }  
      
}  
 
2.2 selectNodes()方法
[javascript]  
function selectNodes(xmlDom,sXpath){  
    if(window.ActiveXObject){//IE浏览器  
        return xmlDom.selectNodes(sXpath);  
          
    }else if(window.XPathEvaluator){//firefox类浏览器  
        var xpathObj=new XPathEvaluator();  
        if(xpathObj){  
            var result=xpathObj.evaluate(sXpath,xmlDom,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);  
            var nodes=new Array();  
            var node;  
            while((node=result.iterateNext())!=null){  
                nodes.push(node);  
            }  
            return nodes;  
        }else{  
            return null;  
        }  
    }else{  
        return null;  
    }     
}  
 
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,