zoukankan      html  css  js  c++  java
  • js异步读取xml(支持ff和xpath)

    在各大论坛间google了一整天,东拼西凑的终于调试成功了。

    首先,定义一个全局变量用于识别当前浏览器是否IE
    全局变量

    针对xml对象在Firefox里的不同属性进行转换,统一接口
    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){
            alert(
    "selectSingleNode");
             
    var  x = this.selectNodes(xpath);
             alert(x);
             alert(x.length);
             
    if ( !|| x.length < 1 ) return  null;
             
    return  x[0];
        }

        XMLDocument.prototype.selectNodes 
    = Element.prototype.selectNodes = function (xpath){       
         alert(
    "selectNodes");
            
    var xpe = new XPathEvaluator();
         alert(
    "1");         
          
    var nsResolver = xpe.createNSResolver(this.ownerDocument == null ? this.documentElement : this.ownerDocument.documentElement);       
             alert(
    "2");    
               
    var result = xpe.evaluate(xpath, this, nsResolver, 0null);
             alert(
    "3");    
             
    var  found =  [];
             
    var  res;         
             
    while (res = result.iterateNext())
            found.push(res);
            
    return found;
        }

        
        Node.prototype.transformNode 
    = function (oXslDom) 
                     
            
    var oProcessor = new XSLTProcessor(); 
            oProcessor.importStylesheet(oXslDom); 
         
            
    var oResultDom = oProcessor.transformToDocument(this); 
            
    var sResult = oResultDom.xml; 
         
            
    if (sResult.indexOf(" <transformiix:result">  -1
                sResult 
    = sResult.substring(sResult.indexOf(""+ 1, sResult.lastIndexOf(" <")); 
            }
     
         
            
    return sResult;                 
        }
    ;
    }

    相关函数如下:
    相关函数

  • 相关阅读:
    IP是什么 DNS 域名与IP有什么不同
    空间、域名与IP之间的关系?
    杨学明老师为深圳某上市企业提供《软件测试技术》内训服务!
    共创力与某上市企业合作的第三期咨询项目正式启动!
    2017.7.28~29,热烈庆祝杨学明老师《研发项目管理》杭州公开课成功举办!
    2017年7月22日~23日,深圳市共创力为某上市企业提供整机设计工程内训服务!
    深圳市共创力咨询第二期“总裁直通车”成功举办!
    阿里巴巴产品需求工程师的三个层次
    共创力咨询推出“总裁直通车”服务!
    2017年7月7日~8日,杨学明老师为深圳蛇口某企业内训课程服务!
  • 原文地址:https://www.cnblogs.com/litsword/p/1174038.html
Copyright © 2011-2022 走看看