mozilla中使用xpath的selectNodes()等方法

来自于:麦盾http://dev.iseasky.com

  1. var isMozilla = (true && document.implementation && 
  2.                  document.implementation.createDocument);   
  3. var XML_COMPATIBLE;   
  4. //window.onerror = function(){return true;};   
  5. if(isMozilla && !XML_COMPATIBLE) {   
  6.     isMozilla = true;   
  7.     Element.prototype.__defineGetter__("text"function () { return this.firstChild.nodeValue; });   
  8.     Element.prototype.__defineGetter__("xml"function () { 
  9.       return (new XMLSerializer()).serializeToString(this); 
  10.     }
  11. );   
  12.     Element.prototype.selectSingleNode = function(xPath) {   
  13.         var xPath;   
  14.         var xresult = this.ownerDocument.evaluate(xPath, this  
  15.             //this.ownerDocument.createNSResolver(this.ownerDocument.documentElement)
  16.             , null  
  17.             , XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);   
  18.         if(xresult && xresult.snapshotLength > 0) {   
  19.             return xresult.snapshotItem(0);   
  20.         } else {   
  21.             return null;   
  22.         }   
  23.     }   
  24.     Element.prototype.selectNodes = function(xPath) {   
  25.         var xPath;   
  26.         var xresult = this.ownerDocument.evaluate(xPath, this  
  27.            //this.ownerDocument.createNSResolver(this.ownerDocument.documentElement)
  28.             , null  
  29.             , XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);   
  30.         var nod = null, nods = [], k = 0;   
  31.         while((nod=xresult.iterateNext())!=null) {   
  32.             nods[k++] = nod;   
  33.         }   
  34.         return nods;   
  35.     }   
  36.     XMLDocument.prototype.selectSingleNode = function(xPath) {   
  37.         var xPath;   
  38.         var xresult = this.evaluate(xPath, this  
  39.             , null//this.createNSResolver(this.documentElement)   
  40.             , XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);   
  41.         if(xresult && xresult.snapshotLength > 0) {   
  42.             return xresult.snapshotItem(0);   
  43.         } else {   
  44.             return null;   
  45.         }   
  46.     }   
  47.     XMLDocument.prototype.selectNodes = function(xPath) {   
  48.         var xPath;   
  49.         var xresult = this.evaluate(xPath, this  
  50.             , null//this.createNSResolver(this.documentElement)   
  51.             , XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);   
  52.         var nod = null, nods = [], k = 0;   
  53.         while((nod=xresult.iterateNext())!=null) {   
  54.             nods[k++] = nod;   
  55.         }   
  56.         return nods;   
  57.     }   
  58.     XML_COMPATIBLE = true;   
  59. }   
  60.   
  61. // http   
  62. var xpool=[], xmethod="POST";   
  63. // isb = 1     :: function(body, status, flag{application|image|video|audio}, headers)   
  64. function xsend(url, func, param, win, async, isb) {   
  65.     var param, url, func, win, async, isb;   
  66.     var xob;   
  67.     for(var k=0; k<xpool.length; k++) {   
  68.         // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete   
  69.         if(xpool[k].readyState==4||xpool[k].readyState==0) xob = xpool[k];   
  70.     }   
  71.     if(!xob) {   
  72.         if(window.XMLHttpRequest) {   
  73.             xob = new window.XMLHttpRequest();   
  74.         } else {   
  75.             var axo = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.4.0",
  76.                        "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];   
  77.             var j = 0, jmax = axo.length; while(j<jmax) { 
  78.               try
  79.                 xob=new ActiveXObject(axo[j++]); 
  80.                 if(xob) break
  81.               }catch(e){}
  82.            }   
  83.         }   
  84.         if(xob) xpool[xpool.length] = xob;   
  85.     }   
  86.     var xvalid = false, xerr = "unknow error";   
  87.     var ctyp = "application/x-www-form-urlencoded";   
  88.     if(xob) {   
  89.         if(!xmethod) xmethod = "POST";   
  90.         xmethod = xmethod.toUpperCase();   
  91.         if(param && typeof(param)=="string" && param.indexOf("=")<0) {   
  92.             if(!win) win = window;   
  93.             var fm = win.document.forms[param];   
  94.             if(fm) {   
  95.                 var els = fm.elements;   
  96.                 var d = [], kmax=els.length;   
  97.                 for(var k=0; k<kmax; k++) {   
  98.                     if(els[k].name) { d[d.length]= els[k].name +"=" +encodeURI(els[k].value); }   
  99.                 }   
  100.                 if(!url) url = fm.action;   
  101.                 if(fm.method) method = fm.method;   
  102.                 if(fm.enctype) ctyp = fm.enctype;   
  103.                 param = d.join("&");   
  104.                 xvalid = true;   
  105.             } else {   
  106.                 xerr = "form '"+param+"' not found";   
  107.             }   
  108.         } else {   
  109.             if(url) { xvalid = true; } else { xerr = "unknow action"; }   
  110.         }   
  111.     } else {   
  112.         xerr = "no xmlhttp prepared";   
  113.     }   
  114.     if(xvalid) {   
  115.         xob.onreadystatechange = function() {   
  116.             if(xob.readyState==4) {   
  117.                 if(func) {   
  118.                     try {   
  119.                         if(isb) {   
  120.                             var ct = xob.getResponseHeader("Content-Type");   
  121.                             func(xob.responseBody, xob.status   
  122.                                 , (ct&&(ct.indexOf("application")==0||ct.indexOf("audio")==0   
  123.                                         ||ct.indexOf("video")==0||ct.indexOf("image")==0)?1:0)   
  124.                                 , xob.getAllResponseHeaders());   
  125.                         } else {   
  126.                             func({"status":xob.status, "text":xob.responseText   
  127.                                 , "body":xob.responseBody, 
  128.                                 "headers":xob.getAllResponseHeaders()});   
  129.                         }   
  130.                     } catch(e) {   
  131.                         func(xob);   
  132.                     }   
  133.                 }   
  134.                 xob.abort();   
  135.             }   
  136.         };   
  137.         xob.open(xmethod, url, (async?1:0));   
  138.         //xob.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg   
  139.         // , application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*");   
  140.         xob.setRequestHeader("Content-Type", ctyp+'; charset=UTF-8'); // request.characterEncoding   
  141.         if(!param) param = null;   
  142.         xob.send(param);   
  143.         return xob;   
  144.     }   
  145.     if(xerr) alert("xsend::" +xerr);   
  146.     return null;   
  147. }   
  148.   
  149. /* xml´¦m */   
  150. var doxbuff;   
  151. function xdoc(u, xmlldr) {   
  152.     var u, xmlldr, flag;   
  153.     flag = (xmlldr?true:false);   
  154.     if (window.ActiveXObject) {   
  155.         doxbuff = new ActiveXObject("Microsoft.XMLDOM");   
  156.         doxbuff.setProperty("SelectionLanguage""XPath");   
  157.         doxbuff.async=flag;   
  158.         doxbuff.onreadystatechange = function (ob) {   
  159.             if(dox.readyState == 4) { if(xmlldr && typeof(xmlldr) == "function") { xmlldr(doxbuff); }}   
  160.         };   
  161.     } else {   
  162.         doxbuff = document.implementation.createDocument("""mindon"null);   
  163.         doxbuff.async=flag;   
  164.         doxbuff.addEventListener('load', function(evt) {   
  165.             if(xmlldr && typeof(xmlldr) == "function") {   
  166.                 xmlldr(doxbuff);   
  167.             }   
  168.         }, false);   
  169.     }   
  170.     if(doxbuff) {   
  171.         if(u.substr(0,1)=="<") {   
  172.             if(document.all) doxbuff.loadXML(u);   
  173.         } else {   
  174.             doxbuff.load(u);   
  175.         }   
  176.         return doxbuff;   
  177.     } else { return null; }   
  178. }   

你可能感兴趣的:(xml,Excel,Microsoft,prototype,Flash)