FireFox对XML的处理兼容IE的节点处理方法

H1K978

H1K978

2016-02-19 21:44

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的FireFox对XML的处理兼容IE的节点处理方法教程,一起来看看吧!超容易上手~

  使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 " );

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  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的支持还是有限度的。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

FireFox对XML的处理兼容IE的节点处理方法

Web开发
FireFox对XML的处理兼容IE的节点处理方法

IE6/IE7和Firefox对Div处理的差异

Web开发
IE6/IE7和Firefox对Div处理的差异

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使用 JavaScript XSLT 处理 XML 文件(支持 Firefox)

Web开发
如何使用 JavaScript XSLT 处理 XML 文件(支持 Firefox)

新兴XML处理方法VTD-XML介绍

Web开发
新兴XML处理方法VTD-XML介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

间隔滚动效果-兼容IE和FireFox

Web开发
间隔滚动效果-兼容IE和FireFox

Firefox、IE的最基本的CSS兼容技巧

Web开发
Firefox、IE的最基本的CSS兼容技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

读取XML为行记录

读取XML为行记录

VC++界面一揽子解决方案(第三版)介绍

VC++界面一揽子解决方案(第三版)介绍
下拉加载更多内容 ↓