我正嘗試使用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 –