예제: 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(); 이 예제에서는 파일이 UTF-8 형식인 것으로 가정하고 readUTFBytes() 및 writeUTFBytes() 메서드를 사용합니다. 그렇지 않은 경우 다른 메서드를 사용해야 합니다. 자세한 내용은 데이터 형식 및 사용할 읽기 및 쓰기 메서드 선택을 참조하십시오. 이전 예제에서는 동기 작업용으로 연 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(); } processXMLData() 메서드는 전체 파일을 읽기 버퍼로 읽어 온 경우(FileStream 객체가 complete 이벤트를 전달할 때) 호출됩니다. 이 메서드는 readUTFBytes() 메서드를 호출하여 읽은 데이터의 문자열 버전을 가져오고 해당 문자열을 기반으로 XML 객체 prefsXML을 만듭니다. 이러한 기능을 보여 주는 샘플 응용 프로그램을 보려면 XML 환경 설정 파일 읽기 및 쓰기를 참조하십시오. |
|