在我的server.js文件中,我創建了一個HTTP GET請求,假設它返回xml。當我將GET請求的響應記錄到控制檯時,它是含有大量問號和黑色菱形的亂碼,如下圖所示:如何在node.js中使用xml文件?
當我使用我在GET中使用的相同url請求,我在瀏覽器中打開它,它會自動下載一個gzip文件,該文件解壓縮後會包含一個帶有數據的清晰xml文件(位於我的文本編輯器內)。
如何在我的server.js文件中以正確的格式獲取xml?我需要在我的程序中使用它,而不是在文本編輯器中(顯然)。
這裏是我的GET請求:
axios.get('http://www2.jobs2careers.com/feed.php?id=1237-2595&c=1&pass=HeahE0W1ecAkkF0l')
.then(function(response) {
console.log(response.data);
});
我試着使用targz庫提取gzip文件,如下圖所示:
axios.get('http://www2.jobs2careers.com/feed.php?id=1237-2595&c=1&pass=HeahE0W1ecAkkF0l')
.then(function(response) {
targz().extract(response.data, '/data', function(err){
if (err) {
console.log('Something is wrong ', err.stack);
}
console.log('Job done!');
});
});
我在控制檯中說的錯誤: 「路徑必須是一個沒有空字節的字符串」。我應該從targz使用提取方法還是僅僅使用它不正確?我試圖「提取」或解壓縮response.data。
答案就在你的問題:響應不是一個XML文件,這是一個gzip文件。您需要一個可以提取它的節點模塊。這裏有一個:https://www.npmjs.com/package/tar.gz –
你也有zlib https://nodejs.org/api/zlib.html#zlib_class_zlib_gzip –
可能的重複:http://stackoverflow.com/questions/12148948/how-do-i-ungzip-decompress -a-nodejs-requests-module-gzip-response-body – jgozal