アプリ内から収集したデータを、付随する .xml という名前の外部 xml ファイルに保存しようとしていますdata.xml
。私はfileReference.save
メソッドを使用していますが、それは仕事をしていないようです:
function parseXML(xmlData:XML):void
{
trace("Parsing:");
trace("-----------------");
var itemIndex:uint = event.currentTarget.index;
delete data.item[itemIndex];
fileReference.save(data, "data.xml");
trace(xmlData);
}
残念ながら、これにより「名前を付けて保存」ダイアログボックスがポップアップし、ユーザーに xml ファイルを保存する場所を尋ねます (私が本当にしたいのは、プロジェクトのディレクトリにある data.xml ファイルを自動的に上書きすることである場合)。ユーザーの側で何を言っても)。
それが進むべき道だと聞いたことFileStream
がありますが (特に Air for iOS にこれを展開する予定です)、それを実装する方法がわかりません。
何か案は?
編集:以下の提案で質問を更新しましたが、まだ機能しません。ファイルは、デスクトップの「RecipeMatcher2」という同じディレクトリにあります。data.xml
つまり、/Desktop/RecipeMatcher2/ (Mac OS X を使用しています) ですが、iPhone でファイルが保存されるパスに解決することも必要です。
function parseXML(xmlData:XML):void
{
trace("Parsing:");
trace("-----------------");
var itemIndex:uint = event.currentTarget.index;
file = File.applicationStorageDirectory;
file = file.resolvePath("data.xml");
delete data.item[itemIndex];
var writeStream:FileStream = new FileStream();
writeStream.open(file, FileMode.WRITE);
writeStream.writeUTFBytes(data.toXMLString());
writeStream.close();
trace('xml file saved');
}
私はもともと次のようにxmlデータをロードします:
loader = new URLLoader();
// listens to see if data has fully loaded//
loader.addEventListener(Event.COMPLETE, dataLoaded);
//loads local xml file with URLrequest method//
loader.load(new URLRequest("data.xml"));
そして、これがこの質問に関連する私の公開変数です:
public var loader:URLLoader;
public var file:File;
public var data:XML;
public var items:XMLList;