Przykłady: wczytywanie pliku XML do obiektu XML

Adobe AIR 1.0 i starsze wersje

Poniższe przykłady demonstrują sposób zapisu i odczytu pliku, który zawiera dane XML.

W celu odczytania danych z pliku należy zainicjować obiekty File i FileStream, wywołać metodę readUTFBytes() obiektu FileStream, a następnie przekształcić ciąg znaków na obiekt 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(); 

I podobnie — w celu zapisania danych do pliku wystarczy skonfigurować odpowiednie obiekty File i FileStream, a następnie wywołać metodę write obiektu FileStream. Następnie należy przekazać dane XML w postaci ciągu znaków do metody write, jak w poniższym kodzie:

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

W poniższych przykładach używane są metody readUTFBytes() i writeUTFBytes() , ponieważ założono, że pliki są w formacie UTF-8. Jeśli format jest inny, konieczne może być użycie innej metody (patrz Formaty danych oraz wybór metod odczytu i zapisu ).

W poniższych przykładach wykorzystano obiekty FileStream otwarte dla operacji synchronicznych. Możliwe jest również otwieranie plików dla operacji asynchronicznych (których odpowiedzi na zdarzenia są uzależnione od funkcji detektorów zdarzeń). Przykład: poniższy kod prezentuje sposób asynchronicznego wczytywania pliku 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(); 
} 

Metoda processXMLData() jest wywoływana, gdy cały plik zostanie wczytany do buforu odczytu (gdy obiekt FileStream wywoła zdarzenie complete ). W kodzie wywoływana jest metoda readUTFBytes() w celu uzyskania danych odczytywanych w wersji ciągu znaków, a następnie tworzony jest obiekt XML prefsXML na podstawie tego ciągu znaków.

Przykładowa aplikacja, w której przedstawiono te funkcje, jest dostępna na stronie Odczyt i zapis z/do pliku preferencji XML .