背景
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] ] } }