範例:將 XML 檔案讀取至 XML 物件中

Adobe AIR 1.0 以及更新的版本

在下列範例中,會示範如何對包含 XML 資料的文字檔案執行讀取和寫入作業。

若要讀取檔案中的資料,請先初始化 File 和 FileStream 物件,然後呼叫 FileStream 的 readUTFBytes() 方法,再將取得的字串轉換為 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。如果檔案格式並非 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(); 
} 

當已將整個檔案都讀取至讀取緩衝區中時 (當 FileStream 物件傳送 complete 事件時),就會叫用 processXMLData() 方法。這個方法會呼叫 readUTFBytes() 方法以取得讀取資料的字串版本,並且根據該字串建立名為 prefsXML 的 XML 物件。

如需示範這些功能的樣本應用程式,請參閱 從 XML 偏好設定檔案讀取和寫入資料