2012-03-09 29 views
1

我试着通过AIR编写的XML对象与FileStream.writeObjectFileStream.writeObject产生不想要的字符

我在做这样的:

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

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

不幸的是,这是结果

Å<data> 
    <name>Testname</name> 
    <email>[email protected]</email> 
    <time>1331290186848</time> 
</data> 

由于我对这个过程没有任何影响,我该如何防止AIR写这些奇怪的字符?

谢谢!

+0

不知道,但我想你应该使用writeUTF()或writeUTFBytes() – RIAstar 2012-03-09 11:00:04

+1

其实我_am_确保只写你的XML作为一个字符串;)否则你会写为XML对象,因此奇怪的字符。 – RIAstar 2012-03-09 11:01:39

+0

writeUTF产生同样的问题... – 2012-03-09 11:08:43

回答

4

您应该将您的XML作为字符串写入文件。现在你将它写成一个XML对象,它看起来很像一个String,但有一些额外的信息。我认为在开始时奇怪的字符代表了字符串的长度。

使用writeUTFBytes()而不是writeObject()。

所以更换

stream.writeObject(xml); 

stream.writeUTFBytes(xml.toXMLString()); 

writeUTF()不会做的伎俩之一:如果你读the docs,你会看到它写入字符串的长度第一个字符也是。

+0

这样做:))谢谢! – 2012-03-09 11:13:55

相关问题