範例:將 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 偏好設定檔案讀取和寫入資料。 |
|