背景
XML我从我将在我的应用程序中使用的大型响应中获取了一些样本数据。我决定将 xml 保存到response.xml我的应用程序中的一个文件中,这样我就可以解析数据而无需向 api 发出一堆不必要的请求。
我将使用xml2js将 xml 响应转换为JS Object.
问题
我已经能够打开文件和console.log()它。
我已经能够xml2js通过将一个小的 xml 字符串传递给它来运行,我也是console.log()它。
但是我只能console.log()在 xml2js 创建对象之后才能访问该文件。无论我尝试什么,在使用 return 或传递尝试在对象的初始创建之外传递数据时,我都会继续得到 null。
例子
这将打印xml tree到控制台,
var fs = require('fs');
var openFile = fs.readFile('./response.xml', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
console.log(data);
});
function requestCreditReport() {
return openFile;
}
requestCreditReport();
这会打印一个小xml string的控制台,静态添加到
xml2js,
var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>";
parseString(xml, function (err, result) {
console.dir(result);
});
问题
在以下方法之外创建对象后,如何使用该对象。最初创建它时,我可以将其输出到控制台,但似乎无法在此之外访问它console.log()。在下面的示例中,我正在尝试return result。当我尝试将函数返回的对象传递给这样的变量时,这会使值空,
var response = requestReport();
最近的尝试,
var fs = require('fs');
var parseString = require('xml2js').parseString;
function requestReport() {
fs.readFile('./response.xml', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
return parseString(data, function (err, result) {
return result;
});
});
}
var response = requestReport();
console.log(response);
这返回null。但是,如果我改为使用 console.log(result) 或使用 return 然后在函数之外尝试它会返回这个,
{ RESPONSE_DATA:
{ '$': { MYAPI: '0.0.0' },
DETAILS: [ [Object] ],
DETAILS_ACCOUNT: [ [Object] ],
RESPONSE: [ [Object] ] } }