2011-03-31 70 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

我結束了轉換爲一個字符串,只是用tab替換雙空格。我發現了科林莫克的替代功能。

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; 
    } 
} 
相關問題