Esempio: lettura di un file XML in un oggetto XML

Adobe AIR 1.0 e versioni successive

Gli esempi seguenti mostrano come leggere e scrivere in un file di testo contenente dati XML.

Per la lettura dal file, inizializzate gli oggetti File e FileStream, chiamate il metodo readUTFBytes() di FileStream e convertite la stringa in un oggetto XML:

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(); 

Analogamente la scrittura dei dati nel file è semplice come configurare appropriati oggetti File e FileStream e quindi chiamare un metodo di scrittura dell'oggetto FileStream. Passate la versione stringa dei dati XML al metodo di scrittura come nel codice seguente:

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(); 

Questi esempi utilizzano i metodi readUTFBytes() e writeUTFBytes(), perché ipotizzano che i file siano in formato UTF-8. In caso contrario, è possibile che sia necessario utilizzare un metodo differente (consultate Formati di dati e selezione dei metodi di lettura e scrittura da utilizzare).

Gli esempi precedenti utilizzano oggetti FileStream aperti per operazioni sincrone. È possibile inoltre aprire i file per operazioni asincrone (che fanno affidamento sulle funzione del listener di eventi per rispondere agli eventi). Ad esempio, il codice seguente mostra come leggere un file XML in modo asincrono:

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(); 
} 

Il metodo processXMLData() viene invocato quando l'intero file viene letto nel buffer di lettura (quando l'oggetto FileStream invia l'evento complete). Chiama il metodo readUTFBytes() per recuperare una versione stringa dei dati di lettura e crea un oggetto XML, prefsXML, in base a tale stringa.

Per visionare un'applicazione d'esempio che mostra queste funzionalità, vedete Reading and writing from an XML preferences file (Lettura e scrittura da un file di preferiti XML).