1

私は文字列に読み込んでその文字列をDOMParserオブジェクトに渡す必要があるXMLファイルを持っています。 FFやChromeではうまく動作しますが、IEではいつものように複雑なことがあります。IE FileReaderが " n"を出力します

このXML構造の例を見てみましょう:

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

とIEが私にこの文字列を提供します:

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

FirefoxとChromeは私にこの文字列を与える

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

することができますようにIEは明示的に\ nを出力し、すべてを1行に出力します。これは\ n文字の処理方法がわからないため、DOMParserに渡すときに問題が発生します。

FileReader()でファイルを読み込み、DOMParser()でFileReaderで生成された文字列を解析します。

私はどのようにこの問題、任意の助けを是正するか分からないのですか?

+0

をバグがDOMParserにであることをより多くの音...それは '\ nを受け入れる必要があります'問題なく、テストのために、' \ r \ n'で新しい行をハードコードしようとすることはできますか?私のVMはオフですが、私はそれが新しい行をエンコードする方法を覚えていると思います。 – Kaiido

+0

あなたのコメントは私にIEの出力を混乱させました。そしてそれは文字列をエスケープするようにも見えるので、personタグの属性もエスケープされます。そして私が何をしても、IEは即座にすべてを適用して、もう一度フォーマットを取りやめているようです。 なぜマイクロソフトは常に奇妙なものでなければならないのですか; l –

答えて

0

あなたの文字列自体にはまだ\n文字が含まれていますが、唯一の違いはIEにはそのまま表示され、ChromeとFirefoxでは改行として表示されることです。

ChromeまたはFirefoxのいずれかでコンソールを開き、"a\nb"と入力すると、2つの異なる行として出力されます。文字列のlengthはまだ3文字ですが、ブラウザコンソールは改行文字を新しい行に変換します。

これは間違いなく問題であれば、いつでも任意の改行文字を削除する文字列にreplace()を使用することができます。

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

あなたは正しいです。 IEのデバッガはrawを表示しますが、console.logやその他の方法を使って印刷した場合は、それらをそのまま印刷しません。この問題はDOMParserに関連しているように見えますが、私はこれまで有用なエラーメッセージ "Unspecified Error"しか得ていません。 –

関連する問題