2016-10-10 7 views
0

いくつかのXMLファイルを取得するのにhttps.reqを使用しています。私はNodeJSバッファから文字列へのエラー

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

を使用して文字列にして、そのバッファを変換し、私はobjtreeまたはxml2jsと、このXMLファイルを解析していますバック呼び出しの後に戻ってデータを取得します。 しばらくの間、ファイルは本当に小さく、何も間違っている可能性があります。しかし、今私は巨大なXMLファイルを解析していると私の解析は私にエラーを与える。

数時間私はパーサーがちょっと悪いと思っていました。それらの多くを試しました。次に、バリスティックを使用して、xmlを使用するかどうかを確認することにしました。私はブラウザでxmlドキュメントのリンクを使用し、ブラウザウィンドウからコピーし、xmlドキュメントを検査しました。すべて見事に見えました。しかし私は使用しました

console.log(data); 

それは私に同じ文書を与えたが、バリデーターは私に多くのエラーを投げた。今私は自分自身をバッファで間違っていると確信しています。文字列に変換します。

エラーは、クローズされていないタグ、未完成の行の空の属性および値です。

答えて

0

問題のカップルがここにあります

最初はあなたのすべてのデータが単一'data'イベントに到着すると仮定してはいけませんので、あなたが必要となります(Chunkを仮定すると、私はそれが何を考えている)ということです受信したチャンクをバッファリングし、応答ストリームで'end'イベントが表示されたら、バッファリングされたデータを使用します。

第2に、UTF-8に変換する場合は、代わりにresponse.setEncoding('utf8')を呼び出して、チャンクに分割されたマルチバイト文字が無効な文字バイトシーケンスに変換されないようにします。一度これを行うと、それはちょうどbuffer += chunkを行うことができることを意味します。

+0

はい。ちょうどテストをしました。データは1つの大きなチャンクで来なかった:)そのことを知らなかった。私の一日を節約! –

関連する問題