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

2016-02-19 21:44 17 1 收藏

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

【 tulaoshi.com - Web开发 】

  使Firefox对XML的处理兼容IE的节点处理方法。具体代码列出如下。

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

  具体代码如下。

  ! 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
      });

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

      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

延伸阅读
标签: Web开发
Firefox对childNodes处理的一个BUG      childNodesFirefox在处理childNodes没有过滤换行与空格。所以在初次使用的时候,得到效果不是预期的效果。 HTML 代码如下: ul class="tbtn" ID="menuList" li class="curr" id="tabap3_btn_0" onclick="tabit(this)"理财大学B/li li id=...
标签: Web开发
     使用ASP处理XSLT转换XML比较简单,思路如下:创建一个XSLTemplate的对象,再创建一个XMLDOM对象,然后在家Xml文件和XSLT文件,最后使用方法transform即可,包含到类里面,具体代码如下: 以下是引用片段: Class Cls_Xml_Transform     Private lInput,XSLTemplate  &nbs...
标签: Web开发
因为要做移动梦网WAP的一些接口,所以要用到这种方式,接下来会有ASP.net版本的,这个是ASP版本的,利用了MSXML2.XMLHTTP对像。 request.asp dim Https set Https=server.createobject("MSXML2.XMLHTTP") '定义一个XMLHTTP对像 Https.open "POST","http://127.0.0.1/testpost/response.asp",false Https....
标签: Web开发
function addCookie() { // 加入收藏夹 if (document.all) { window.external.addFavorite('http://taotao.wsyren.com', '牛吧'); } else if (window.sidebar) { window.sideb...
  猪肝营养价值很高,但是近年来,很多人却不愿意吃猪肝了!为什么,因为大家,都说猪肝的毒素太高了,不敢吃!瘦肉精啊预防戊肝病毒啊。 猪肝怎么处理?猪肝的处理方法 没错,猪肝的确是猪的解毒器官,是毒物中转站,但这并不代表猪肝就真的毒到不能吃的地步!而且正确处理猪肝,营养价值还是非常高的,当然,更要注意的是...

经验教程

228

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部