Beispiel: Einlesen einer XML-Datei in ein XML-Objekt

Adobe AIR 1.0 und höher

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 .