Voorbeeld: Een XML-bestand lezen in een XML-object

Adobe AIR 1.0 of hoger

In de volgende voorbeelden ziet u hoe u kunt lezen van en schrijven naar een tekstbestand dat XML-gegevens bevat.

Om te lezen van het bestand, initialiseert u de File- en FileStream-objecten, roept u de methode readUTFBytes() van het FileStream-object op en converteert u de tekenreeks naar een XML-object:

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

Om de gegevens naar het bestand te schrijven, hoeft u alleen maar de correcte File- en FileStream-objecten in te stellen en vervolgens een schrijfmethode van het FileStream-object op te roepen. Geef de tekenreeksversie van de XML-gegevens door aan de schrijfmethode zoals in de volgende code:

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

Bij deze voorbeelden wordt gebruikgemaakt van de methoden readUTFBytes() en writeUTFBytes() , omdat er bij deze methoden van wordt uitgegaan dat de bestanden de UTF-8-indeling hebben. Als dat niet het geval is, moet u mogelijk een andere methode gebruiken (zie Gegevensindelingen, en de methode voor lezen en schrijven kiezen ).

Bij de voorgaande voorbeelden worden FileStream-objecten gebruikt die zijn geopend voor synchrone bewerkingen. U kunt ook bestanden openen voor asynchrone bewerkingen (die gebruikmaken van gebeurtenislistenerfuncties om te reageren op gebeurtenissen). In de volgende voorbeeldcode ziet u hoe u een XML-bestand asynchroon kunt lezen:

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

De methode processXMLData() wordt opgeroepen wanneer het gehele bestand in de leesbuffer is ingelezen (wanneer het FileStream-object de gebeurtenis complete verzendt). Deze roept de methode readUTFBytes() op om een tekenreeksversie van de leesgegevens te verkrijgen en maakt op basis van die tekenreeks het XML-object prefsXML .

Een voorbeeldtoepassing waarin deze mogelijkheden worden getoond, vindt u in Lezen van en schrijven naar een XML-voorkeurenbestand .