Pull to refresh

Flash XML parsing: win vs mac

Reading time 2 min
Views 735
Простой и понятный с виду код:
package {
  import flash.display.Sprite;
  
  public class XCDATATest extends Sprite {
    public function XCDATATest() {
      var node:XML = <format>
       <![CDATA[<b>ds3 - CSV Settings:</b>
ignore_first_row=<b>true</b>
columns_separator=<b>;</b>
rows_separator=<b>\n</b>]]>
      </format>;
      trace (String(node));
    }
  }
}


* This source code was highlighted with Source Code Highlighter.

Может привести к очень «веселым» последствиям разной работы swf-ки под разными системами.

Файл с исходником для желающих попробовать: anychart.com/batsuev/habrahabr/xml-win-mac/XCDATATest.as
Собственно кто откроет файл с кодом — сразу догадается в чем дело.
(копипастом из статьи не добьетесь подобного)

А веселье собственно заключается в том, что trace под маком выдаст следующее:
              <b>ds3 - CSV Settings:</b>
ignore_first_row=<b>true</b>
columns_separator=<b>;</b>
rows_separator=<b>\n</b>


* This source code was highlighted with Source Code Highlighter.


А под Win будет вот так:
<b>ds3 - CSV Settings:</b>
ignore_first_row=<b>true</b>
columns_separator=<b>;</b>
rows_separator=<b>\n</b>


* This source code was highlighted with Source Code Highlighter.


Это различие в работе 10-го Flash Player-а под Win и Mac заключается в том, что волшебный символ с кодом 0xA0 (более известный как nbsp) игнорирутеся за пределами CDATA под Win, но воспринимается как значимый под Mac.

Будьте внимательны с невидимыми символами.

P.S.: XML с этим волшебным символом выдала Visual Studio после автоформатинга
Tags:
Hubs:
+6
Comments 20
Comments Comments 20

Articles