FireFox对XML的处理兼容IE的节点处理方法_XHTML/WEB_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

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

作者:黑客防线网安XML教程基地 来源:黑客防线网安XML教程基地 浏览次数:0

本篇关键词:处理节点方法兼容
黑客防线网安网讯:  使Firefox对XML的处理兼容IE的节点处理方法。具体代码列出如下。  具体代码如下。  <! DOCTYPE Html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >   < HTML >   < HEAD >...

  使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.rongsen.com.cn/show-15913-1.html
网站维护教程更新时间:2012-04-06 01:01:15  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer