为FireFox的XMLDocument 增加 LoadXML,SelectNodes,SelectSingleNode方法

用惯了IE 的Dom,再来用 FireFox的Dom,感觉真的非常不习惯。连最起码的LoadXML方法都没有。
加入下面的代码,你就可以像在IE下一样使用XmlDom啦!

 

var  infoNodes;
if (document.all)
    infoNodes 
=  document.getElementById( " xmlInfo " ).XMLDocument.documentElement.selectNodes( " Product " );
else {
    XMLDocument.prototype.loadXML 
= function(xmlString)
    
{
        
var childNodes = this.childNodes;
        
for (var i = childNodes.length - 1; i >= 0; i--)
            
this.removeChild(childNodes[i]);

        
var dp = new DOMParser();
        
var newDOM = dp.parseFromString(xmlString, "text/xml");
        
var newElt = this.importNode(newDOM.documentElement, true);
        
this.appendChild(newElt);
    }
;

    
// check for XPath implementation
    if( document.implementation.hasFeature("XPath""3.0") )
    
{
       
// prototying the XMLDocument
       XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
       
{
          
if!xNode ) { xNode = this; } 
          
var oNSResolver = this.createNSResolver(this.documentElement)
          
var aItems = this.evaluate(cXPathString, xNode, oNSResolver, 
                       XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
null)
          
var aResult = [];
          
forvar i = 0; i < aItems.snapshotLength; i++)
          
{
             aResult[i] 
=  aItems.snapshotItem(i);
          }

          
return aResult;
       }


       
// prototying the Element
       Element.prototype.selectNodes = function(cXPathString)
       
{
          
if(this.ownerDocument.selectNodes)
          
{
             
return this.ownerDocument.selectNodes(cXPathString, this);
          }

          
else{throw "For XML Elements Only";}
       }

    }


    
// check for XPath implementation
    if( document.implementation.hasFeature("XPath""3.0") )
    
{
       
// prototying the XMLDocument
       XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
       
{
          
if!xNode ) { xNode = this; } 
          
var xItems = this.selectNodes(cXPathString, xNode);
          
if( xItems.length > 0 )
          
{
             
return xItems[0];
          }

          
else
          
{
             
return null;
          }

       }

       
       
// prototying the Element
       Element.prototype.selectSingleNode = function(cXPathString)
       
{    
          
if(this.ownerDocument.selectSingleNode)
          
{
             
return this.ownerDocument.selectSingleNode(cXPathString, this);
          }

          
else{throw "For XML Elements Only";}
       }

    }


  
// 创建 XML 文档对象
  var xmlRef = document.implementation.createDocument("text/xml"""null);
  
// 使用 importNode 将HTML DOM 的一部分转换为XML 文档。 

  
//  参数 true 表示克隆全部子元素。
   var  myNode  =  document.getElementById( " xmlInfo " );
  xmlRef.loadXML(myNode.innerHTML);
  infoNodes 
=  xmlRef.documentElement.childNodes;
}


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值