2012-09-08 2 views
0

내가 XML과 같은 세 가지 구성 요소의 데이터를 저장할 수 있습니다읽기 XML 데이터 다시 플렉스 구성 요소에

도와주세요 그것은 작동하지만, 지금은 때 사용자 구성 요소로 다시 데이터를 읽을 수있는 코드로 어려움을 겪고 있어요 열립니다. 이 파일은 사용자가 만든 로컬 파일입니다. open 이벤트 핸들러에 대한 도움이 필요합니다.

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         width="734" height="389" 
         creationComplete="init();"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 

    </fx:Declarations> 


    <fx:Script> 
     <![CDATA[ 

     [Bindable] 
     public var xmlData:XML=<ROOTS></ROOTS>; 

     private function fnAddItem():void 
     { 
     var fr:FileReference = new FileReference(); 

     var ba:ByteArray = new ByteArray(); 
     var newXmlRow:XML=<ROOTS> 
     <TXT>{txt1.text}</TXT> 
     <TXTA>{txt2.text}</TXTA> 
     <DTF>{txt3.text}</DTF> 
     </ROOTS>; 
     ba.writeMultiByte(newXmlRow, 'utf-8'); 
     fr.save(ba); 
     } 


      protected function oped_clickHandler(event:MouseEvent):void 
      { 
       var fr:FileReference = new FileReference(); 
       var ba:ByteArray = new ByteArray(); 
       var newXmlRow:XML=<ROOTS> 
         <TXT>{txt1.text}</TXT> 
         <TXTA>{txt2.text}</TXTA> 
         <DTF>{txt3.text}</DTF> 
         </ROOTS>; 
       ba.readMultiByte(xmlData, 'utf-8'); 
       fr.load(ba); 

      } 


     ]]> 
    </fx:Script> 
    <s:Label x="108" y="80" text="Name"/> 
    <s:Label x="91" y="222" text="Remarks"/> 
    <s:Label x="108" y="116" text="text"/> 
    <s:TextInput id="txt1" x="167" y="78"/> 
    <s:TextArea id="txt2" x="167" y="218" height="86"/> 
    <s:TextArea id="txt3" x="167" y="108" height="77"/> 

    <s:Button x="53" y="242" label="save" width="90" click="fnAddItem()"/> 
    <s:Button id="oped" x="73" y="271" label="open" click="oped_clickHandler(event)"/> 

</s:WindowedApplication> 

답변

0

첫 번째 대화 상자가 필요하면 사용자가 선택을 기다려야합니다. 선택하면 잡을 수있는 이벤트가 발생합니다. 핸들러 내에서 파일 처리를 수행 할 수 있습니다. 다음 코드가 효과가 있으면 시도하십시오.

private var openedFile:File; 

    private function oped_clickHandler(event:MouseEvent):void { 
     openedFile = new File(); 
     openedFile.addEventListener(Event.SELECT, file_select); 
     openedFile.browseForOpen("Please select a file..."); 
    } 

    private function file_select(event:Event):void { 
     if(openedFile != null && openedFile.exists){ 
      var fileStream:FileStream = new FileStream(); 
      fileStream.open(openedFile, FileMode.READ); 
      var readXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable)); 
      fileStream.close(); 
      trace(readXML.toString()); 
      txt1.text = readXML.TXT; 
      txt2.text = readXML.TXTA; 
      txt3.text = readXML.DTF; 
     } 
     trace(event); 
    } 

환호, 강탈

+0

안녕 롭,이 해 주셔서 감사합니다. 나는이 문제에 대해 며칠을 보냈으며, 수업과 모델을 제공 받았다. 나는 간단한 방법이 있다는 것을 알고 있었고 이것은 원했던 것과 똑같이 작동합니다. 감사. 내가 너를 도울 수있는 방법이 있니, 너는 내가 지금 얼마나 행복한 줄 알았어! –

관련 문제