2016-11-17 1 views
0

내 server.js 파일에서 xml을 반환한다고 가정하는 HTTP GET 요청을합니다. 콘솔에 GET 요청의 응답을 기록 할 때 아래 사진에서 볼 수 있듯이 물음표와 검은 색 다이아몬드가 많이 포함 된 횡설수설입니다. enter image description herenode.js에서 xml 파일을 사용하려면 어떻게해야합니까?

내 GET에서 사용하는 것과 동일한 URL을 사용하면 요청을하고 브라우저에서 열면 gzip 파일이 자동으로 다운로드됩니다.이 파일은 압축 해제 된 후 데이터가 포함 된 읽을 수있는 XML 파일 (내 텍스트 편집기 내부)을 포함합니다.

내 server.js 파일의 올바른 형식으로 xml을 가져 오는 방법은 무엇입니까? 나는 그것을 텍스트 편집기 (분명히)가 아니라 내 프로그램에서 사용할 필요가있다.

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 라이브러리를 사용하여 GZIP 파일을 추출하려고했습니다

axios.get('http://www2.jobs2careers.com/feed.php?id=1237-2595&c=1&pass=HeahE0W1ecAkkF0l') 
    .then(function(response) { 
    console.log(response.data); 
    }); 

: 여기

내 GET 요청입니다 : "경로는 null 바이트가없는 문자열이어야합니다". targz에서 추출 방법을 사용해야합니까, 아니면 그냥 잘못 사용하고 있습니까? response.data를 압축 해제하거나 압축을 풀려고합니다.

+0

대답은 귀하의 질문에 : 응답은 XML 파일이 아닙니다, 그것은 GZIP 파일입니다. 추출 할 수있는 노드 모듈이 필요합니다. 여기에 하나 : https://www.npmjs.com/package/tar.gz –

+0

또한 zlib https://nodejs.org/api/zlib.html#zlib_class_zlib_gzip –

+0

가능한 복제본 : http://stackoverflow.com/question/12148948/how-do-i-ungzip-decompress-a-nodejs-requests-module-gzip-response-body – jgozal

답변

1

: Simplest way to download and unzip files in Node.js cross-platform?

var feedURL = 'http://www2.jobs2careers.com/feed.php?id=1237-2595&c=1&pass=HeahE0W1ecAkkF0l'; 

var request = require('request'), 
    zlib = require('zlib'), 
    fs = require('fs'), 
    out = fs.createWriteStream('./feed.xml'); 

request(feedURL).pipe(zlib.createGunzip()).pipe(out); 
+0

이것은 훨씬 간단한 대답이며, 작동합니다. – Mjuice

0

업데이트 된 코드에서 첫 번째 매개 변수 (response.data)를 gzip 파일의 파일 시스템 경로로 설정해야하므로 null 바이트 오류가 발생합니다. 나는 파일 시스템에 글을 쓰거나, 추출하거나, URL에서 추출 할 수있는 다른 모듈을 고려할 것이다.

올바른 경로에있는 추출 된 gzip 파일에서 XML을 가져 오면 xml2js과 같은 노드 모듈을 사용하여 xml을 Javascript 객체로 구문 분석하고, 함께 작업하기가 쉽습니다. 이를 바탕으로

+0

그래서 파일을 압축 해제하는 방법을 알아 냈고 이제는 루트 디렉토리에 feed.xml로 저장됩니다. xml2js를 사용하여 해당 XML을 JSON으로 변환하려고합니다. xml2js에 대한 문서에서는 다음 예제를 제공합니다. var parseString = require ('xml2js'). parseString; VAR의 XML은 = "안녕하세요 xml2js!" parseString을 (XML, 함수 (ERR, 결과) { console.dir (결과) }); 변수 xml이 문자열로 설정됩니다. xml을 feed.xml 파일의 값으로 설정하려면 어떻게해야합니까? – Mjuice

+0

이 시점에서 로컬에 저장된 feed.xml 파일이 있다고 가정합니다. 여기에서 [fs.readFileSync()] (https://nodejs.org/api/fs.html#fs_fs_readfilesync_file_option)를 사용하여 xml 변수로 설정 한 다음이를 문자열로 파싱하는 것으로 시작할 수 있습니다. –

+0

나는 readFileSync를 시도 할 것이다, 나는 아직 시도하지 않았다. – Mjuice

관련 문제