I am attempting to follow this article to evaluate an XPath expression. My code is copy/pasted from the article:
// Evaluate an XPath expression aExpression against a given DOM node
// or Document object (aNode), returning the results as an array
// thanks wanderingstan at morethanwarm dot mail dot com for the
// initial work.
function evaluateXPath(aNode, aExpr) {
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver(aNode.ownerDocument == null ?
aNode.documentElement : aNode.ownerDocument.documentElement);
var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);
return found;
}
However, I'm getting this error:
Message: ReferenceError: XPathEvaluator is not defined
Is Mozilla's article out of date, perhaps? Is there a more up-to-date article available on parsing XML in an SDK add-on?
Edit. When I tried it this way:
var {Cc, Ci} = require("chrome");
var domXPathEvaluator = Cc["@http://ift.tt/1II9uXP"].createInstance(Ci.nsIDOMXPathEvaluator);
I got a long error message:
- message = Component returned failure code: 0x80570019 (NS_ERROR_XPC_CANT_CREATE_WN) [nsIJSCID.createInstance]
- fileName = undefined
- lineNumber = 14
- stack = @undefined:14:undefined|@http://resourcehelloworld-addon/index.js:14:25|run@resourcegre/modules/commonjs/sdk/addon/runner.js:145:19|startup/</<@resourcegre/modules/commonjs/sdk/addon/runner.js:86:7|Handler.prototype.process@resourcegre/modules/Promise-backend.js:920:23|this.PromiseWalker.walkerLoop@resourcegre/modules/Promise-backend.js:799:7|this.PromiseWalker.scheduleWalkerLoop/<@resourcegre/modules/Promise-backend.js:738:39|Promise*this.PromiseWalker.scheduleWalkerLoop@resourcegre/modules/Promise-backend.js:738:7|this.PromiseWalker.schedulePromise@resourcegre/modules/Promise-backend.js:762:7|this.PromiseWalker.completePromise@resourcegre/modules/Promise-backend.js:705:7|handler@resourcegre/modules/commonjs/sdk/addon/window.js:56:3|
- toString = function () /* use strict */ toString
Aucun commentaire:
Enregistrer un commentaire