Пример: чтение XML-файла в XML-объект

Adobe AIR 1.0 и более новых версий

Ниже приводятся примеры чтения и записи в текстовый файл, содержащий XML-данные.

Для чтения инициализируйте объекты File и FileStream, вызовите метод readUTFBytes() объекта FileStream и преобразуйте строку в 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(); 

Точно так же, для записи данных в файл нужно всего лишь создать объекты File и FileStream и вызвать методы записи объекта FileStream. XML-данные в виде строки нужно передать методу записи, как показано ниже:

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

В этих примерах используются методы readUTFBytes() и writeUTFBytes(), так как предполагается, что файлы закодированы в формат UTF-8. В противном случае требуется использовать другой метод (см. раздел Форматы данных и выбор методов чтения и записи).

В предыдущем примере используются объекты FileStream, открытые для синхронных операций. Файлы также могут быть открыты для асинхронных операций (которые зависят от функций прослушивателей событий и их реакции на события). Например, ниже приведен пример асинхронного чтения из XML-файла:

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

Метод processXMLData() вызывается после того, как файл полностью считан в буфер чтения, т. е. когда объект FileStream отправляет событие complete. Он вызывает метод readUTFBytes() для получения версии считываемых данных в виде строки и создает на основании этой строки XML-объект prefsXML.

Пример приложения, демонстрирующий эти возможности, см. в разделе «Чтение и запись в XML-файл установок».