예제: 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 환경 설정 파일 읽기 및 쓰기를 참조하십시오.