2016-10-10 94 views
0

我使用https.req來獲取一些xml文件。我得到的電話後回的數據後,我用NodeJS Buffer to String錯誤

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

轉換該緩衝區中的字符串,然後我解析與objtree或xml2js此XML文件。 一段時間都沒關係,因爲文件非常小,沒有什麼可能出錯。但現在我正在解析一個巨大的XML文件,我的解析給我錯誤。

幾個小時我在想思考語法分析器是不好的。嘗試了很多。然後我決定使用驗證器來檢查是否使用xml操作。所以我用瀏覽器中的xml文檔鏈接,從瀏覽器窗口複製它並檢查我的xml文檔。一切看起來不錯。但後來我用

console.log(data); 

它給了我相同的文件,但驗證器扔了我噸的錯誤。所以現在我確信我正在緩衝它自己做錯了。並將其轉換爲字符串。

錯誤是未封閉的標籤,未完成的行是空的屬性和值。

回答

0

有幾個問題在這裏:

首先是(假設Chunk是什麼,我認爲這是)你不應該承擔所有的數據都將在一個'data'事件到達,所以你需要一旦在響應流中看到'end'事件,就會緩衝收到的塊並使用緩衝的數據。其次,如果要轉換爲UTF-8,則可能需要調用response.setEncoding('utf8'),這將確保跨組塊分割的任何多字節字符不會轉換爲無效字符字節序列。一旦你這樣做,這意味着你可以做buffer += chunk

+0

是的。只是做了一個測試。數據沒有進來一大塊:)沒有意識到這一點。 ü拯救我的日子!!!! –