2013-05-31 93 views
0

我有一個xml文件,裏面有聯盟xml樹與這麼多節點是如此聯繫,但我只想返回id和名稱每個leage,我使用的xml-object-stream節點模塊可以在https://github.com/idottv/xml-object-stream找到。將值賦給回調函數中的全局變量並返回它[Node.js]

xml = require('xml-object-stream'), 
fs = require('fs'); 

function buildLeagues(cb){ 
    var leaguesData = []; 
    var data = fs.createReadStream("./tmp/leagues.xml"); 
    var parser = xml.parse(data); 

    var parser.each('league', function(league){ 
     var leagues = {}; 
     leagues.id = league.$.id ; 
     leagues.name = league.$text; 
     leaguesData.push(leagues); 

    }); 

    cb(JSON.stringify(leaguesData)); 

}

問題我有此功能是用JavaScript範圍; leaguesData變量總是返回[]由於回調函數中的新範圍,我甚至嘗試在全局範圍內聲明它,但同樣的問題,任何人都可以提出一個更好的方法來從批量xml文件構建我的json數據。 謝謝

回答

2

從文檔:

解析器發出一些流事件

parser.on 'end', -> 
parser.on 'error', (err) -> 
parser.on 'close', -> 

這意味着你應該觸發回調時,事件流完成後,你的leaguesData數組包含所有結果。所以嘗試

​​
+0

非常感謝你Bergi,是的,你是對的,我不需要'JSON.stringify' –

相關問題