3

我正在制作一个在 XML 文件中保存和加载属性的应用程序。一切都在正常工作,除了一件事。

function save(){
    var item:XML = new XML(<node></node>);

    var file = new File();
    file = File.applicationStorageDirectory.resolvePath("generated.xml");

    //children of the main node and attributes and stuff are managed here but
    //they're working fine so i've removed them from this example.

    var fileStream = new FileStream();
    fileStream.open(file, FileMode.WRITE);
    fileStream.writeObject(item);
    fileStream.close();
}

当上面的代码被执行时,它应该保存一个如下所示的 xml:

<node/>

或者如果它里面有一个孩子:

<node>
    <child> whatever </child>
</node>

但是,当我在 sublime text 2 中打开 XML 文件时,它看起来像这样

http://i46.tinypic.com/15h1k5h.png

并且 CS6 调试器会抛出错误 #1088:文档中根元素之后的标记必须格式正确。

如果我手动进入并删除虚假字符,air 能够很好地读取它,但是当我保存对 XML 的任何更改时,我将不得不手动进入并再次删除虚假字符。

您对我如何解决此问题有任何想法吗?谢谢你。

PS:假人物好像变了。[VT] 每次都一样,但 [SI] 不一样。我不知道这意味着什么或者它是否相关,但它可能是。

4

1 回答 1

2

你不想在writeObject这里使用。除了字符串,也许还有数字,writeObject 实际上写入与实际对象相关的数据(公共属性、内存标识符等)。您想要保存 XML 的字符串版本(XML.toString()应该可以)或使用 writeUTFBytes()。我个人从来没有使用过writeUTFBytes(),但是如果我的理解是正确的,它只会写入对象的文本而不是对象数据本身。我也会尝试一下。

于 2013-03-15T18:44:23.480 回答