Exemplo: Leitura de arquivo XML em um objeto XML

Adobe AIR 1.0 e posterior

O exemplo a seguir demonstra como fazer a leitura e a gravação de um arquivo de texto contendo dados XML.

Para ler o arquivo, inicialize os objetos File e FileStream, chame o método readUTFBytes() do FileStream e converta a sequência em um objeto 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 modo semelhante, gravar dados no arquivo é tão fácil quanto configurar os objetos File e FileStream apropriados e, em seguida, chamar um método de gravação do objeto FileStream. Passe a versão de sequência dos dados XML para o método de gravação, como no código seguinte:

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

Esses exemplos usam os métodos readUTFBytes() e writeUTFBytes() , porque consideram que os arquivos estejam no formato UTF-8. Caso contrário, você pode precisar usar um método diferente (consulte Formatos de dados e seleção de métodos de leitura e gravação para uso ).

Os exemplos anteriores usam objetos FileStream abertos para operação síncrona. Você também pode abrir arquivos para operações assíncronas (que dependem das funções de ouvinte de evento para responder aos eventos). Por exemplo, o código a seguir mostra como fazer a leitura de um arquivo XML de modo assíncrono:

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

O método processXMLData() é chamado quando o arquivo inteiro é lido no buffer de leitura (quando o objeto FileStream despacha o evento complete ). Ele chama o método readUTFBytes() para obter uma versão de sequência dos dados lidos e cria um objeto XML, prefsXML , com base nessa sequência.

Para visualizar um aplicativo de amostra que mostre esses recursos, consulte Leitura e gravação de um arquivo de preferências XML .