javascript跨浏览器的XPath操作

来源:互联网 发布:淘宝小号交易安全平台 编辑:程序博客网 时间:2024/06/13 07:54

今天突然想起来,从javascript高级编程上摘抄,以备后用

function selectNodes(context, expression, namespaces) {  var doc = (context.nodeType !== 9 ? context.ownerDocument : context),      nodes = [],      result = null,      i = 0,      len = 0;  if (typeof doc.evaluate !== "undefined") {    var nsresolver = null;    if (namespaces instanceof Object) {      nsresolver = function(prefix) {        return namespaces[prefix];      };    }    result = doc.evaluate(expression, context, nsresolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);    if (result !== null) {      for (i = 0, len = result.snapshotLength; i < len; i++) {        nodes.push(result.snapshotItem(i));      }    }    return nodes;  } else if (typeof context.selectNodes !== "undefined") {    if (namespaces instanceof Object) {      var ns = '';      for (var prefix in namespaces) {        if (namespaces.hasOwnProperty(prefix)) {          ns += 'xmlns:' + prefix + "='" + namespaces[prefix] + "' ";        }      }      doc.setProperty("SelectionNamespaces", ns);    }    result = context.selectNodes(expression);    for (i = 0, len = result.length; i < len; i++) {      nodes.push(result[i]);    }    return nodes;  } else {    throw new Error("No XPath engine found.");  }}


0 0
原创粉丝点击