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

互联网 17-2-27
使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 >

从例子可以看到,IE对xpath的支持还是有限度的。

以上就是FireFox对XML的处理兼容IE的节点处理方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:基于关系型数据库引擎的"XML"索引技术

相关资讯