XMLの内容をAS3でTextFieldに出力すると改行しない
XML形式のデータから改行コード「n」が含まれた文字列を、ActionScript3で読み込み出してTextFieldに出力すると、改行コードは改行されずに、そのまま「n」と表示されてしまいます。
例えば以下のような内容のXMLデータを読み込みます。
<?xml version="1.0" encoding="utf-8"?> <item> <message>あいうえおnかきくけこnさしすせそ</message> </item>
これを、通常のAS3の処理で読み込んで任意のTextFieldにセットします。
(中略) var xml:XML = new XML(loader.data); message.text = xml.message;
すると出力結果は
「あいうえおnかきくけこnさしすせそ」
となってしまいます。
改行コードの部分は改行させたい。
なんの事はない、データを読み込む際に自動でエスケープ処理されていただけなんですね。
つまり、「n」は「\n」に置換されちゃっているので、これを元に戻してあげればよいのです。
(前略) var xml:XML = new XML(loader.data); message.text = xml.message.replace("\n", "n");;
出力結果は以下のように意図した形になりました。
「あいうえお
かきくけこ
さしすせそ」
この答えにたどり着くまでに、キャリッジリターン「CR」とラインフィード「LF」の違いだとか、そもそも改行コードが違うのだとか、さまざまな情報に惑わされて多くの時間を費やしてしまいました。
実際には、PC環境やFlashやASのバージョンなどケースにより対策もさまざまだと思われますが、私の場合、上記の方法で簡単に解決しました。
コメントする