FileStream.writeObject выдает нежелательные символы - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь написать объект XML через AIR с FileStream.writeObject

Я делаю так:

var _file:File = File.applicationDirectory.resolvePath("test.xml");
var _xml:XML = new XML("<data><name>Testname</name><email>test@test.de</email><time>1331290186848</time></data>");

stream = new FileStream()
stream.open(_file, FileMode.WRITE);
stream.writeObject(xml);
stream.close();

к сожалению, это результат

Å<data>
   <name>Testname</name>
   <email>test@test.de</email>
   <time>1331290186848</time>
</data>

, поскольку я не имею никакого влияния на процесс, как я могу запретить AIR писать эти странные символы?

спасибо!

1 Ответ

4 голосов
/ 09 марта 2012

Вы должны записать свой XML в файл в виде строки. Прямо сейчас вы пишете его как объект XML, который очень похож на String, но имеет некоторую дополнительную информацию. Я думаю, что странный символ в начале представляет длину строки.

Используйте writeUTFBytes () вместо writeObject ().

Так замените

stream.writeObject(xml);

с

stream.writeUTFBytes(xml.toXMLString());

writeUTF () тоже не справится: если вы прочитаете документы , вы увидите, что она также записывает длину строки как первый символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...