DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> FireFox對XML的處理兼容IE的節點處理方法
FireFox對XML的處理兼容IE的節點處理方法
編輯:XML詳解     

使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 >


XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved