我正尝试使用Express.js构建Node.js Web应用程序,该应用程序从外部xml文件读取值,并将所有数据值存储在一个数组。有多个XML文件可以读取,因此重复执行相同的过程。Express.js读取xml文件数据并将数据作为数组传递
function loadSoftwareRequestXML(filename){
var xmlparser = new xml2js.Parser();
var software_request = new Array();
var filepath = "/project_requests/" + filename;
fs.readFile(filepath, "utf-8", function(error, values){
xmlparser.parseString(values, function(error, xmlfile){
var xmldata = xmlfile;
date_requested = xmldata.ProjectRequest.DateRequested;
client_org = xmldata.ProjectRequest.ClientOrganization;
proposed_budget = xmldata.ProjectRequest.ProposedBudget;
contact_name = xmldata.ProjectRequest.ContactName;
delivery_date = xmldata.ProjectRequest.DeliveryDate;
requirements = xmldata.ProjectRequest.UserRequirements;
//software_request = [date_requested, client_org, proposed_budget, contact_name, delivery_date, requirements];
software_request.push(date_requested);
software_request.push(client_org);
});
});
console.log(software_request);
return software_request;
}
时遇到的问题是,关于“software_request”,其存储所检索的XML数据中的数组变量,它工作时它是XMLParser的函数内。但是,如果在return语句之前使用console.log()跟踪它,它将变成一个空数组。
你会如何解决这个问题?请随意发表评论。任何帮助或建议表示赞赏。
http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call –