示例:将 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 首选参数文件中读取和写入。 |
|