1

Ich habe eine XML-Datei, die ich in eine Zeichenfolge lesen und diese Zeichenfolge an ein DOMParser-Objekt übergeben muss. All das funktioniert in FF und Chrome einwandfrei, aber IE hat die üblichen Dinge kompliziert.IE FileReader druckt " n"

Nehmen Sie zum Beispiel diese XML-Struktur:

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

FireFox und Chrome geben Sie mir diese Zeichenfolge:

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

und IE gibt mir diese Saite:

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

wie Sie können, siehe, IE druckt das \ n explizit aus und druckt alles auf einer einzelnen Zeile. Dies führt zu einem Problem, wenn ich einen DOMParser übergebe, da er nicht weiß, wie er mit den Zeichen umgehen soll.

Ich benutze FileReader() zum Einlesen der Datei und DOMParser() zum Parsen der vom FileReader erzeugten Zeichenfolge.

Ich bin mir nicht sicher, wie dieses Problem zu beheben, jede Hilfe?

+0

Der Fehler mehr klingt in der DOMParser sein ... Es sollte '\ n akzeptieren 'Ohne Probleme, nur für den Test, können Sie versuchen, neue Zeilen mit' \ r \ n' zu programmieren, meine VM ist ausgeschaltet, aber ich denke, ich erinnere mich daran, wie Windows neue Zeilen codiert. – Kaiido

+0

Ihr Kommentar hat mich mit der Ausgabe von IE herumgemacht und es scheint, dass es auch die Strings entkommt, so dass ein Attribut auf dem Person-Tag auch entkommen würde. Und egal, was ich mache, IE scheint sofort alle Formatierungen anzuwenden, sobald ich es entferne. Warum muss Microsoft immer der eine sein? ... l –

Antwort

0

Ihre Zeichenfolge selbst enthält immer noch die \n Zeichen, der einzige Unterschied ist, dass IE zeigt sie roh und Chrome und Firefox zeigen sie als Zeilenumbrüche.

Wenn Sie die Konsole entweder in Chrome oder Firefox öffnen und "a\nb" eingeben, erhalten Sie die Ausgabe als zwei verschiedene Zeilen. Die length der Zeichenfolge ist immer noch 3 Zeichen, aber die Browserkonsole konvertiert die Newline-Zeichen in neue Zeilen.

Wenn dies auf jeden Fall ein Problem ist, dann können Sie immer replace() auf die Zeichenfolge verwenden, um alle Zeilenumbrüche abzustreifen:

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

Sie hatten Recht. IE Debugger zeigt sie roh, aber wenn Sie console.log oder eine andere Methode verwenden, um es auszudrucken, werden sie nicht roh ausgedruckt. Das Problem scheint mit dem DOMParser verwandt zu sein, aber ich bekomme nur die immer so nützliche Fehlermeldung "Unspezifizierter Fehler". –