Die folgenden Beispiele verdeutlichen Lese- und Schreibvorgänge in XML-Dateien.
Um aus einer XML-Datei zu lesen, initialisieren Sie das File- und das FileStream-Objekt, rufen die Methode
readUTFBytes()
des FileStream-Objekts auf und konvertieren den String in ein XML-Objekt:
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
Entsprechend einfach ist das Schreiben der Daten in die XML-Datei: Sie richten das entsprechende File- und FileStream-Objekt ein und rufen dann eine write-Methode des FileStream-Objekts auf. Übergeben Sie dann, wie im folgenden Code, die String-Version der XML-Daten an die write-Methode:
var prefsXML:XML = <prefs><autoSave>true</autoSave></prefs>;
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
var outputString:String = '<?xml version="1.0" encoding="utf-8"?>\n';
outputString += prefsXML.toXMLString();
fileStream.writeUTFBytes(outputString);
fileStream.close();
Die folgenden Beispiele verwenden die Methoden
readUTFBytes()
und
writeUTFBytes()
, da sie davon ausgehen, dass die Daten im UTF-8-Format gespeichert wurden. Wenn nicht, müssen Sie möglicherweise eine andere Methode verwenden (siehe
Datenformate und die geeigneten read- und write-Methoden
).
Das vorige Beispiel verwendet FileStream-Objekte, die für synchrone Operationen geöffnet wurden. Sie können auch Dateien für asynchrone Operationen öffnen (die sich auf Ereignis-Listener-Funktionen verlassen, die auf bestimmte Ereignisse reagieren). Der folgende Code beispielsweise zeigt, wie eine XML-Datei asynchron gelesen wird:
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, processXMLData);
fileStream.openAsync(file, FileMode.READ);
var prefsXML:XML;
function processXMLData(event:Event):void
{
prefsXML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
}
Die Methode
processXMLData()
wird aufgerufen, wenn die gesamte Datei in den Lesepuffer gelesen wird (wenn das FileStream-Objekt das
complete
-Ereignis auslöst). Sie ruft die Methode
readUTFBytes()
auf, um eine Stringversion der Lesedaten abzurufen, und erstellt aufgrund dieses Strings das XML-Objekt
prefsXML
.
Eine Beispielanwendung mit diesen Fähigkeiten finden Sie unter
Lesen und Schreiben von einer XML-Einstellungsdatei
.