2017-10-11 121 views
0

我有以下代碼從URL讀取XML主體並將其另存爲.json文件。循環訪問URL並將數據存儲在json文件中

var parseString = require('xml2js').parseString; 
    var http = require('http'); 
    var fs = require('fs'); 

    var url = "http://vhost11.lnu.se:20090/assig2/index.php?table=User&id=1" 
    function xmlToJson(url, callback) { 
     var req = http.get(url, function(res) { 
     var xml = ''; 

     res.on('data', function(chunk) { 
      xml += chunk; 
     }); 

     res.on('error', function(e) { 
      callback(e, null); 
     }); 

     res.on('timeout', function(e) { 
      callback(e, null); 
     }); 

     res.on('end', function() { 
      parseString(xml, function(err, result) { 
      callback(null, result); 
      }); 
     }); 
     }); 
    } 



    xmlToJson(url, function(err, data) { 
     if (err) { 
     // Handle this however you like 
     return console.err(err); 
     } 

     fs.writeFile("./users.json", JSON.stringify(data, null, 4), (err) => { 
     if (err) { 
      console.error(err); 
      return; 
     }; 

    }); 


    }) 

這是有效的。現在,我必須通過增加URL的'id ='部分,'id = 1','id = 2','id = 3'等來遍歷幾個URL,並將所有數據保存在同一個json文件中。

http://vhost11.lnu.se:20090/assig2/index.php?table=User&id=1 

我該怎麼做?

回答

0

很簡單,實際上

var parseString = require('xml2js').parseString; 
 
    var http = require('http'); 
 
    var fs = require('fs'); 
 
    var url = "http://vhost11.lnu.se:20090/assig2/index.php?table=User&id=" 
 
    function xmlToJson(url,id, callback) { 
 
     var req = http.get(url+id, function(res) { 
 
     var xml = ''; 
 

 
     res.on('data', function(chunk) { 
 
      xml += chunk; 
 
     }); 
 

 
     res.on('error', function(e) { 
 
      callback(e, null); 
 
     }); 
 

 
     res.on('timeout', function(e) { 
 
      callback(e, null); 
 
     }); 
 

 
     res.on('end', function() { 
 
      parseString(xml, function(err, result) { 
 
      callback(null, result); 
 
      }); 
 
     }); 
 
     }); 
 
    } 
 

 

 

 
    for(var i = 1 i<=10;i++){ 
 
     xmlToJson(url,i, function(err, data) { 
 
     if (err) { 
 
     // Handle this however you like 
 
     return console.err(err); 
 
     } 
 
     var jsoncontent = fs.readFileSync("./users.json").toString(); 
 
     fs.writeFile("./users.json", jsoncontent+"\n"+JSON.stringify(data, null, 4), (err) => { 
 
     if (err) { 
 
      console.error(err); 
 
      return; 
 
     }; 
 

 
    }); 
 
    } 
 

 

 
    })

你可以看到,在URL的末尾我刪除的ID號,並在xmltojson功能我添加了一個id參數,所以現在的功能可以在循環中使用,因此可以獲取許多ID,或者您可以插入特定的ID來獲取XML。還請注意,我在寫入之前閱讀json文件,以便我可以獲得已經存在的內容並將其添加到其中

+0

輸出非常隨機且不完整,我得到一堆{ 「User」:「 \ n「 }。 Jiust注意到我從一個空的users.json開始 –

相關問題