1

我有一個XML文件,需要讀入字符串並將該字符串傳遞給DOMParser對象。所有這些在FF和Chrome中運行得都很好,但IE瀏覽器像往常一樣複雜。IE FileReader輸出「 n」

就拿這個XML結構:

<person> 
    <firstname>John</firstname> 
    <lastname>Doe</lastname> 
</person> 

Firefox和Chrome給我這個字符串:

"<person> 
    <firstname>John</firstname> 
    <lastname>Doe</lastname> 
</person>" 

和IE給我這個字符串:

"<person>\n <firstname>John</firstname>\n <lastname>Doe</lastname>\n </person>" 

,你可以請參閱,IE會明確打印\ n並在一行上打印所有內容。當我傳遞給DOMParser時,這會導致問題,因爲它不知道如何處理\ n字符。

我使用FileReader()來讀取文件,使用DOMParser()來分析FileReader產生的字符串。

我不知道如何解決這個問題,有什麼幫助嗎?

+0

的錯誤聽起來更是在的DOMParser ......它應該接受'\ n '沒有問題,只是爲了測試,你可以嘗試用'\ r \ n'來硬編碼新行,我的虛擬機關閉了,但我想我記得windows是如何編碼新行的。 – Kaiido

+0

你的評論讓我對IE的輸出感到厭煩,而且它似乎也逃脫了字符串,所以人標籤上的一個屬性也會被轉義。不管我做什麼,IE似乎立即應用它的所有格式化,第二次刪除它。 爲什麼微軟總是必須是一個奇怪的......; l –

回答

0

你的字符串本身仍然包含\n個字符,唯一的區別是IE將它們顯示爲raw,Chrome和Firefox將它們顯示爲換行符。

如果您在Chrome或Firefox中打開控制檯並鍵入"a\nb",您會得到兩行不同的輸出。該字符串的length仍然是3個字符,但瀏覽器控制檯會將換行符轉換爲新行。

如果這肯定是有問題,那麼你可以隨時使用replace()的字符串中去掉任何換行符:

"<person>\n ... \n </person>".replace(/\n/g, "") 
+0

你是對的。 IE調試器顯示它們是原始的,但如果使用console.log或其他方法將其打印出來,則不會將它們打印出來。該問題似乎與DOMParser有關,但我只能得到非常有用的錯誤消息「未指定的錯誤」。 –