Skip to content

Instantly share code, notes, and snippets.

@keigoi
Created October 26, 2015 05:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keigoi/09adff88ca9546e3534c to your computer and use it in GitHub Desktop.
Save keigoi/09adff88ca9546e3534c to your computer and use it in GitHub Desktop.
function xpath(elm, expr) {
var it = document.evaluate(expr, elm, null, XPathResult.ANY_TYPE, null);
var typ = it.resultType;
switch(typ) {
case XPathResult.NUMBER_TYPE:
return it.numberValue;
case XPathResult.STRING_TYPE:
return it.stringValue;
case XPathResult.BOOLEAN_TYPE:
return it.booleanValue;
default: {
var rows = [];
var node = it.iterateNext();
while(node!=null) {
if(node instanceof Text) {
rows.push( node.textContent );
} else {
rows.push( node );
}
node = it.iterateNext();
}
return rows;
}}
}
function xpath_(elm, expr) {
var ret = xpath(elm, expr);
if(Array.isArray(ret)) {
return ret[0];
} else {
return ret;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment