2009-03-17 27 views
0

Ich habe dieses Problem, wenn bearbeiten meine xml alles auf eine nächste Zeile macht zwei BruchkantenFlash/XML Bruchkanten und versteckte Charaktere

<![CDATA[Line one 
Line two 
Line three 
]]> 

in Flash-Renders als

 
Line One 

Line Two 

Line Three 

Jetzt habe ich recherchiert dies vor und es hatte etwas mit versteckten Breakline-Zeichen zu tun, ich benutze Flexbuilder und oder Aptana, um das XML zu bearbeiten, aber wie vermeide ich zwei Bruchkanten, wenn ich eins will.

Antwort

1

Flash interpretiert sowohl \r als auch \n als neue Zeilenzeichen. Wenn Ihre Eingabe Windows-Zeilenenden enthält (\r\n), sehen Sie eine leere Zeile in der Ausgabe.

Um Ihr Problem zu lösen, verwenden Sie die folgende Regex, um zwei aufeinanderfolgende Vorkommen \r und \n durch eins zu ersetzen, bevor Sie Ihre Daten ausgeben.

var newline:RegExp = /\r\n|\n\r/g; 
var input:String = "your XML CDATA input"; 
var output:String = input.replace(newline, "\n"); 

Eigentlich ist es unwahrscheinlich, dass \n\r jemals auftritt, aber da wir schon ersetzen, können wir diese ungültigen Zeilenenden als auch beheben.

+0

macht Sinn, aber ist das nicht ein bisschen Overkill? – Kasper

+0

Es ist die Problemumgehung, die verhindert, dass das Problem jemals wieder auftaucht, unabhängig von Ihren Bearbeitungsgewohnheiten/Plattformen und Datenquellen. Wickeln Sie es in eine Funktion und Sie sind fertig. Die Optimierung Ihres Editors funktioniert nur so lange, wie Sie es nicht vergessen. Die Optimierung externer Datenquellen funktioniert möglicherweise überhaupt nicht. – Tomalak

+0

okay danke, ich habe es angewendet. – Kasper

0

Vielleicht fügen Sie die falschen Zeilenendezeichen ein. Normalerweise haben Sie folgende Auswahlmöglichkeiten: cr-lf, cr und lf. Das erste funktioniert gut auf Windows, das zweite auf Mac, das dritte auf den meisten Unix-Varianten. Versuchen Sie, Ihren Editor auf lf (\ n) zu setzen.