2016-10-10 4 views
0

일부 XML 파일을 얻으려면 https.req를 사용하고 있습니다. 나는 다시 내가NodeJS 버퍼 문자열 오류

var data = Chunk.toString("utf-8"); 

를 사용하여 문자열에서 그 버퍼를 변환 그리고 내가 objtree 또는 xml2js이 XML 파일을 구문 분석하고 다시 호출 후 데이터를 얻을. 잠시 동안 파일이 정말 작아서 아무 것도 잘못 될 수는 없으므로 모두 괜찮습니다. 하지만 지금은 거대한 XML 파일을 구문 분석하고 내 구문은 오류를 제공합니다.

몇 시간 동안 나는 파서가 나쁘다고 생각했다. 그들 중 많은 수를 시도했다. 다음 나는 유효성 검사기를 사용하여 xml과 함께 smth worng인지 확인하기로 결정했습니다. 그래서 브라우저에서 XML 문서 링크를 사용하여 브라우저 창에서 복사하고 내 xml 문서를 검사했습니다. 모두 괜찮아 보였다. 그러나 그 때 나는 사용했다

console.log(data); 

그리고 저에게 동일한 문서를 주었다 그러나 validator는 저에게 과실의 톤을 던졌다. 그래서 지금 나는 그것이 자기 자신을 완충기로 잘못한 짓을하고 있다고 확신한다. 문자열로 변환합니다.

오류는 닫히지 않은 태그, 완료되지 않은 행의 빈 속성 및 값입니다. 당신은 당신이 필요합니다 귀하의 모든 데이터가 하나의 'data' 이벤트에 도착합니다 가정해서는 안 (Chunk를 가정하는 것은 내가 생각하는 것입니다) 것을

첫 번째는 다음과 같습니다

답변

0

여기에 문제의 몇 가지가 있습니다 수신 된 청크를 버퍼링하고 응답 스트림에서 'end' 이벤트를 확인한 후 버퍼링 된 데이터를 사용합니다.

두 번째로, UTF-8로 변환하는 경우 을 호출하여 청크에 걸쳐 분할 된 멀티 바이트 문자가 잘못된 문자 바이트 시퀀스로 변환되지 않도록 할 수 있습니다. 일단 이렇게하면 buffer += chunk을 할 수 있음을 의미합니다.

+0

예. 방금 시험 했어. 데이터 didnt는 1 개의 큰 덩어리에 온다 :) 그것에 대해 알고있는 wasnt. U 저를 지켜 주셨습니다 !!!! –