Exempel: Läsa en XML-fil till ett XML-objekt

Adobe AIR 1.0 och senare

I följande exempel visas hur du läser och skriver till en textfil som innehåller XML-data.

Om du vill läsa från filen initierar du File- och FileStream-objekten, anropar metoden readUTFBytes() för FileStream och konverterar strängen till ett 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(); 

Att skriva data till filen är lika enkelt som att ställa in rätt File- och FileStream-objekt och sedan anropa en write-metod för FileStream-objektet. Skicka strängversionen för XML-data till write-metoden så som i följande kod:

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

Dessa exempel använder metoderna readUTFBytes() och writeUTFBytes(), eftersom de förutsätter att filerna är i UTF-8-format. Om så inte är fallet, kanske du måste använda en annan metod (se Dataformat och att välja read- eller write-metod).

I föregående exempel används FileStream-objekt som öppnats för synkrona åtgärder. Du kan också öppna filer för asynkrona åtgärder (som använder händelseavlyssnare för att svara på händelser). Följande kod visar hur du läser en XML-fil asynkront:

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

Metoden processXMLData() anropas när hela filen läses till läsbufferten (när FileStream-objektet skickar händelsen complete). Den anropar metoden readUTFBytes() för att hämta en strängversion av läsdata, och skapar ett XML-objekt, prefsXML, baserat på den strängen.

Ett exempelprogram som visar dessa funktioner finns i Läsa och skriva från en XML-inställningsfil.