Exemple : Lecture et insertion d’un fichier XML dans un objet XML

Adobe AIR 1.0 et les versions ultérieures

Les exemples suivants expliquent comment accéder en lecture et en écriture à un fichier de texte contenant des données XML.

Pour lire le fichier, initialisez les objets File et FileStream, appelez la méthode readUTFBytes() de l’objet FileStream et convertissez la chaîne en objet 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(); 

De même, pour écrire dans le fichier, il suffit de définir les objets File et FileStream appropriés, puis d’appeler une méthode d’écriture de l’objet FileStream. Transmettez la version chaîne des données XML à la méthode d’écriture, comme l’illustre le code suivant :

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

Ces exemples utilisent les méthodes readUTFBytes() et writeUTFBytes(), car il est considéré comme acquis que les fichiers sont au format UTF-8. Si tel n’est pas le cas, vous devrez peut-être recourir à une autre méthode (voir la section Format de données et choix des méthodes de lecture et d’écriture).

Les exemples précédents utilisent des objets FileStream ouverts en mode synchrone. Vous pouvez aussi ouvrir des fichiers en mode asynchrone (ce type d’opération nécessite l’utilisation de fonctions d’écouteur d’événement pour répondre aux événements). Par exemple, le code suivant illustre comment lire un fichier XML en mode asynchrone :

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

La méthode processXMLData() est appelée lorsque le fichier est intégralement lu et inséré dans la mémoire tampon de lecture (autrement dit, lorsque l’objet FileStream distribue l’événement complete). Elle appelle la méthode readUTFBytes() pour obtenir une version chaîne des données lues, puis elle crée un objet XML, prefsXML, basé sur cette chaîne.

Pour accéder à un exemple d’application possédant ces fonctionnalités, voir Lecture et écriture à partir d’un fichier de préférence XML.