syphonx-core
Version:
SyphonX is a template-driven solution for extracting data from HTML in a highly efficient way. It combines the power of jQuery, Regular Expressions, and Javascript into a declarative template-driven format that extracts and reshapes HTML data into JSON.
45 lines • 1.64 kB
JavaScript
export function evaluateXPath(xpath, nodes) {
const result = {
nodes: [],
value: []
};
for (const node of nodes) {
const eval_result = document.evaluate(xpath, node, null, XPathResult.ANY_TYPE, null);
if (eval_result.resultType === XPathResult.STRING_TYPE) {
result.nodes.push(node);
result.value.push(eval_result.stringValue);
}
else if (eval_result.resultType === XPathResult.NUMBER_TYPE) {
result.nodes.push(node);
result.value.push(eval_result.numberValue);
}
else if (eval_result.resultType === XPathResult.BOOLEAN_TYPE) {
result.nodes.push(node);
result.value.push(eval_result.booleanValue);
}
else if (eval_result.resultType === XPathResult.UNORDERED_NODE_ITERATOR_TYPE) {
let node = eval_result.iterateNext();
while (node) {
result.nodes.push(node);
result.value.push(node.textContent);
node = eval_result.iterateNext();
}
return result;
}
else if (eval_result.resultType === XPathResult.ORDERED_NODE_ITERATOR_TYPE) {
const result = {
nodes: [],
value: []
};
let node = eval_result.iterateNext();
while (node) {
result.nodes.push(node);
result.value.push(node.textContent || null);
node = eval_result.iterateNext();
}
return result;
}
}
return result;
}
//# sourceMappingURL=xpath.js.map