想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的FireFox对XML的处理兼容IE的节点处理方法教程,一起来看看吧!超容易上手~
【 tulaoshi.com - Web开发 】
使Firefox对XML的处理兼容IE的节点处理方法。具体代码列出如下。
具体代码如下。
  ! DOCTYPE Html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"  
   HTML  
   HEAD  
   TITLE   使firefox对xml的处理兼容IE的selectSingleNode selectNodes方法  / TITLE  
   META  NAME ="Author"  CONTENT ="emu"  
   META  NAME ="KeyWords"  CONTENT ="firefox IE selectSingleNode selectNodes"  
   META  NAME ="Description"  CONTENT ="使firefox可以支持selectSingleNode selectNodes方法"  
   SCRIPT  LANGUAGE ="javascript"  
  !-- 
  var  isIE  =   !! document.all;
  function  parseXML(st){
       if (isIE){
           var  result  =   new  ActiveXObject( " microsoft.XMLDOM " );
          result.loadXML(st);
      } else {
           var  parser  =   new  DOMParser();
           var  result  =  parser.parseFromString(st,  " text/xml " );
      }
       return  result;
  }
  if ( ! isIE){
       var  ex;
      XMLDocument.prototype.__proto__.__defineGetter__( " xml " ,  function (){
           try {
               return   new  XMLSerializer().serializeToString( this );
          } catch (ex){
               var  d  =  document.createElement( " div " );
              d.appendChild( this .cloneNode( true ));
               return  d.innerHTML;
          }
      });
      Element.prototype.__proto__.__defineGetter__( " xml " ,  function (){
           try {
               return   new  XMLSerializer().serializeToString( this );
          } catch (ex){
               var  d  =  document.createElement( " div " );
              d.appendChild( this .cloneNode( true ));
               return  d.innerHTML;
          }
      });
      XMLDocument.prototype.__proto__.__defineGetter__( " text " ,  function (){
           return   this .firstChild.textContent
      });
      Element.prototype.__proto__.__defineGetter__( " text " ,  function (){
           return   this .textContent
      });
      XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (XPath){
           var  x = this .selectNodes(xpath)
           if ( ! x    x.length  1 ) return   null ;
           return  x[ 0 ];
      }
      XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){
           var  xpe  =   new  XPathEvaluator();
           var  nsResolver  =  xpe.createNSResolver( this .ownerDocument  ==   null   ? 
               this .documentElement :  this .ownerDocument.documentElement);
           var  result  =  xpe.evaluate(xpath,  this , nsResolver,  0 ,  null );
           var  found  =  [];
           var  res;
           while  (res  =  result.iterateNext())
              found.push(res);
           return  found;
      }
  }
  var  x  =  parseXML( " people  person first-name= " eric "  middle-initial= " H "  last-name= " jung "     address street= " 321  south st "  city= " denver "  state= " co "  country= " usa " /    address street= " 123  main st "  city= " arlington "  state= " ma "  country= " usa " /  /person  person first-name= " jed "  last-name= " brown "     address street= " 321  north st "  city= " atlanta "  state= " ga "  country= " usa " /    address street= " 123  west st "  city= " seattle "  state= " wa "  country= " usa " /    address street= " 321  south avenue "  city= " denver "  state= " co "  country= " usa " /  /person/people " );
  alert( " 搜索所有人的姓氏(last-name) " )
  var  results  =  x.selectNodes( " //person/@last-name " );
  for  ( var  i = 0 ; i  results.length;i ++ )
    alert( " Person # "   +  i  +   "  has the last name  "   +  results[i].nodeValue);
  alert( " 搜索第二个人 " );
  //  IE是以0为下标基数的,而不是1 
  if ( ! document.all)
      results  =  x.selectSingleNode( " /people/person[2] " );
  else 
      results  =  x.selectSingleNode( " /people/person[1] " );
  alert(results.xml)
  alert( " 获得住址在donver街上的人 " );
  results  =  x.selectNodes( " //person[address/@city='denver'] " );
  for  ( var  i = 0 ; i  results.length;i ++ )alert(results[i].xml)
  if ( ! document.all){
       //  获得所有街名中带south的地址 
      results  =  x.selectNodes( " //address[contains(@street, 'south')] " );
      alert(results[ 0 ].xml);
  } else {
      alert( " IE不支持 //address[contains(@street, 'south')] 这种查询方式 " )
  }
  // -- 
  / SCRIPT  
  / HEAD  
   BODY  
  / BODY  
  / HTML  
例子引自 http://kb.mozillazine.org/XPath 。从例子可以看到,IE对xpath的支持还是有限度的。
来源:http://www.tulaoshi.com/n/20160219/1627024.html
看过《FireFox对XML的处理兼容IE的节点处理方法》的人还看了以下文章 更多>>