今天突然想起来,从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.");
}
}