javaScript中的xml

一、浏览器中的XML DOM支持

1、IE中的XML支持

第一步创建 XMLDOM对象

微软在javascript中引入了ActiveX对象中的ActiveXObject类
使用这个函数就可以保证调用到最新版本的XML DOM版本

  function createXMLDOM(){
       var arrSignatures=["MSXML2.DOMDcument.5.0","MSXML2.DOMDcument.4.0","MSXML2.DOMDcument.3.0","MSXML2.DOMDcument","Microsoft.XmlDom"];
       for(var i=0;i<arrSignatures.length;i++){
           try{
               var oXmlDom=new ActiveXObject(arrSignatures[i]);
               return oXmlDom;
           }
           catch(e){

           }

       }
       throw new Error("没有安装MSL")
   }

调用的这个函数来为IE浏览器来创建XMLDOM对象,但是注意的是使用的额时候注意的是,在使用这函数之前,必须判断浏览器,否则在这段函数在其他浏览中会出错

   function createXMLDOM(){
       var arrSignatures=["MSXML2.DOMDcument.5.0","MSXML2.DOMDcument.4.0","MSXML2.DOMDcument.3.0","MSXML2.DOMDcument","Microsoft.XmlDom"];
       for(var i=0;i<arrSignatures.length;i++){
           try{
               var oXmlDom=new ActiveXObject(arrSignatures[i]);
               return oXmlDom;
           }
           catch(e){

           }

       }
       throw new Error("没有安装MSL")
   }
    function isload(){
        if(document.all){        //判断是否为ie浏览器,因为这个属性只有在ie中才会出现
            //创建了最新版本的XML对象,但是注意的是这段IE方式创建xmlDom对象的方式会在其它浏览器出错,所以一定要进行浏览器的检测
            var oXMLDom=createXMLDOM();
        }
    }

第二步、载入XML

载入的方式

    function isload(){
        if(document.all){        //判断是否为ie浏览器,因为这个属性只有在ie中才会出现
            //创建了最新版本的XML对象,但是注意的是这段IE方式创建xmlDom对象的方式会在其它浏览器出错,所以一定要进行浏览器的检测
            var oXMLDom=createXMLDOM();
            //直接载入的是XMl字符串
            oXMLDom.loadXML("<root><child/></root>")
            //从服务器上载入XML文件(但是只能载入与包含javascript的页面存储于同一服务器上的文件)
        }
    }

载入的模式:
同步载入:javascript代码会等待文件完全载入后才继续执行代码
异步载入:不会等待文件载入完成,继续执行自己的代码,使用事件处理函数来判断是否载入完成

    function isload(){
      //判断浏览器window.ActiveXObject 只有IE支持
        if(document.all){        //判断是否为ie浏览器,因为这个属性只有在ie中才会出现
            //创建了最新版本的XML对象,但是注意的是这段IE方式创建xmlDom对象的方式会在其它浏览器出错,所以一定要进行浏览器的检测
            var oXMLDom=createXMLDOM();
            //直接载入的是XMl字符串
            //oXMLDom.loadXML("<root><child/></root>");
            //从服务器上载入XML文件(但是只能载入与包含javascript的页面存储于同一服务器上的文件)
            //默认是异步载入的,将其async属性设置为false就变为同步载入
           // oXMLDom.async=false;
             oXMLDom.load("test.xml");
            alert(oXMLDom.documentElement.tagName);
        }
    }
</scrip

异步载入文件的时候要使用readState特性和onreadystatechange事件处理函数
readyState特性有5种可能的值:
0 DOM尚未初始化任何信息
1 DOM正在载入数据
2 DOM完成了数据载入
3 DOM已经可用,不过某些部分可能还不能用
4 DOM已经完全载入
一旦readyState特性的值会改变就会触发readystatechange事件。

oXMLDom.onreadystatechange=function(){
                if(oXMLDom.readyState==4){
                    alert("DOM完全载入");
                }
            }

注意:在if语句中没有使用this关键字而是依然使用oXMLDom.readyState

第三步、获取XML

var oNode=oXMLDom.documentElements.childNodes[1];

注意:xml是只读的,直接对其修改只能回造成错误

第四步、解释遇到的错误

尝试将xml文件载入到javascript的过程中难免会遇到错误,无论使用上述的哪个方法,为了解决这个问题,微软的XML DOM的parseError的特性实际上包含以下特性的所有信息

2、Mozilla中的XML支持

第一步:创建DOM

    //这三个参数分别表示文档的命名空间URL、文档元素的标签名称、文档的类型对象
            var oXmlDom=document.implementation.createDocument("","",null);

第二步:载入XML

载入模式也会有异步和同步同上
只提供了一个载入的方式:load()方式
将xml语句解析为DOM:也就是同loadXML()函数一样

            var oParser=new DOMParser();
            var oXmlDom=oParser.parseFromString("<root/>","text/xml");

第三步:获取XML

你可能感兴趣的:(javaScript中的xml)