xpath.js

来自「ajax快速入门,主要讲解原理与部门实现」· JavaScript 代码 · 共 66 行

JS
66
字号
var isIE = (navigator.userAgent.indexOf("MSIE")!=-1); 

// check for XPath implementation
if(!isIE) {
   // 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 = [];
      for( var 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";}
   }


   // 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";}
   }
}

function getNodeString(node,tag){
	try {
		return node.selectSingleNode(tag+"/text()").nodeValue;
	} catch(e){
		return "";
	}
}

function getAttributeString(attributes,tag){
	for(var i=0;i<attributes.length;i++){
		var name=attributes.item(i).name;
		var value=attributes.item(i).value;
		if(name==tag){
			return value;
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?