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. |
|