2011-03-31 3 views
1

AIR 응용 프로그램 용 AS3/Flex에서 xml 파일을로드하고 있습니다. 저장하면 들여 쓰기가 꽤 보이지만 원본 파일의 모든 탭은 이제 공백입니다. 탭이 남아 있다고 저장할 수 있습니까?AS3/FLex4/Air 응용 프로그램에서 XML을 저장할 때 탭 유지

열려있는 파일의 코드 : 파일의 코드 저장

var file:File = event.target as File; 
var fileStream:FileStream = new FileStream(); 
fileStream.open(file, FileMode.READ); 

var fileContents:String = fileStream.readUTFBytes(
    fileStream.bytesAvailable); 
fileStream.close(); 

XML.ignoreComments = false; 
XML.ignoreWhitespace = false; 
var newXML:XML = new XML(fileContents); 

var scriptParent:XML = <xml></xml>; 
scriptParent.appendChild(newXML); 
data = new XMLListCollection(scriptParent.children()); 

:

var stream:FileStream = new FileStream(); 
stream.open(currFileObject, FileMode.WRITE); 
stream.writeUTFBytes(XML (data)); 
stream.close(); 

감사합니다!

답변

1

문자열로 변환되고 탭으로 이중 공백을 바꾸기 시작했습니다. 나는 Colin Moock의 대체 기능을 발견했다.

function saveData(event:Event):void 
{ 
    var newFile:File = event.target as File; 
    var stream:FileStream = new FileStream(); 
    stream.open(newFile, FileMode.WRITE); 
    var xString:String = data.toXMLString(); 
    var result = replace(xString, " ", String.fromCharCode(9)); 
    stream.writeUTFBytes((result)); 
    stream.close(); 
} 

function replace (origStr, searchStr, replaceStr) { 
    var tempStr = ""; 
    var startIndex = 0; 
    if (searchStr == "") { 
     return origStr; 
    } 
    if (origStr.indexOf(searchStr) != -1) { 
     var searchIndex = origStr.indexOf(searchStr, startIndex) 
     while (searchIndex != -1) { 
      tempStr += origStr.substring(startIndex, searchIndex); 
      tempStr += replaceStr; 
      startIndex = searchIndex + searchStr.length; 
      searchIndex = origStr.indexOf(searchStr, startIndex) 

     } 
     return tempStr + origStr.substring(startIndex); 
    } else { 
     return origStr; 
    } 
} 
관련 문제