Exempel: Läsa en XML-fil till ett XML-objektAdobe 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. |
|