示例:将 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 格式。如果不是此格式,您可能需要使用其他方法(请参阅 数据格式以及选择要使用的读取和写入方法 )。

前面的示例使用为进行同步操作而打开的 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() 方法以获取所读数据的字符串版本,然后它基于该字符串创建一个 XML 对象 prefsXML

要查看演示这些功能的示例应用程序,请参阅 从 XML 首选参数文件中读取和写入