我是 JavaScript 编程的新手,我什至不知道如何询问 Google,所以我将详细描述我想要实现的目标。
我正在使用 node.js 和 xml2js 模块为 jasmine 创建 DataProvider 类,它解析简单的 XML 文件:
<Tests>
<Test name="test1">
<values>2,4,6</values>
<expectations>1,2,3</expectations>
</Test>
<Test name="test2">
<values>8,10,12</values>
<expectations>4,5,6</expectations>
</Test>
</Tests>
我希望 DataProvider 构造函数立即解析 XML 并在this.testData
. 脚本是:
var fs = require('fs'),
xml2js = require('xml2js'),
util = require('util');
var DataProvider = function(dataPath) {
this.dataPath = dataPath;
this.testData;
fs.readFile(this.dataPath, function(err, data) {
var parser = new xml2js.Parser();
parser.parseString(data, function(err, result) {
//console.log(util.inspect(result, false, null));
this.testData = result;
});
});
};
我使用它如下:
var dp = new DataProvider("C:\\data2.xml");
console.log(dp.testData);
当我运行>node script.js
我收到的脚本时undefined
。当我取消注释console.log(util.inspect(result, false, null));
时,我收到
undefined
{ Tests:
{ Test:
[ { '$': { name: 'test1' },
values: [ '2,4,6' ],
expectations: [ '1,2,3' ] },
{ '$': { name: 'test2' },
values: [ '8,10,12' ],
expectations: [ '4,5,6' ] } ] } }
所以通常它可以工作,但是如何分配result
给this.testData
?
这与范围有关this.testData
吗?