vscode-xml/src/services/XPathEvaluator.ts

23 lines
752 B
TypeScript
Raw Normal View History

2016-01-13 18:01:51 -05:00
'use strict';
import * as xpath from 'xpath';
let DOMParser = require('xmldom').DOMParser;
export class XPathEvaluator {
static evaluate(query: string, xml: string): Node[] {
let nodes: Node[] = new Array<Node>();
let xdoc: Document = new DOMParser().parseFromString(xml, 'text/xml');
let resolver: xpath.XPathNSResolver = xpath.createNSResolver(xdoc);
let expression: xpath.XPathExpression = xpath.createExpression(query, resolver);
let result: xpath.XPathResult = expression.evaluate(xdoc, xpath.XPathResult.ORDERED_NODE_ITERATOR_TYPE);
let node: Node;
while (node = result.iterateNext()) {
nodes.push(node);
}
return nodes;
}
}