3

XMLファイルに属性を保存およびロードするアプリを作成しています。1つを除いて、すべてが正常に機能しています。

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>

ただし、XMLファイルを崇高なテキスト2で開くと、次のようになります。

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 に答える