Apache flex 将XML数据读回flex组件
请帮忙 我可以将这三个组件中的数据保存为xml,它可以正常工作,但现在我正在努力编写代码,以便在用户打开时将这些数据读回组件中。这是用户创建的本地文件。我需要有关打开事件处理程序的帮助Apache flex 将XML数据读回flex组件,apache-flex,air,flash-builder,Apache Flex,Air,Flash Builder,请帮忙 我可以将这三个组件中的数据保存为xml,它可以正常工作,但现在我正在努力编写代码,以便在用户打开时将这些数据读回组件中。这是用户创建的本地文件。我需要有关打开事件处理程序的帮助 <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.
<?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>
;
私有函数fnAddItem():void
{
var fr:FileReference=newfilereference();
var ba:ByteArray=新的ByteArray();
var newXmlRow:XML=
{txt1.text}
{txt2.text}
{txt3.text}
;
ba.writeMultiByte(newXmlRow,'utf-8');
fr.save(ba);
}
受保护的函数oped_clickHandler(事件:MouseeEvent):无效
{
var fr:FileReference=newfilereference();
var ba:ByteArray=新的ByteArray();
var newXmlRow:XML=
{txt1.text}
{txt2.text}
{txt3.text}
;
ba.readMultiByte(xmlData,'utf-8');
fr.荷载(ba);
}
]]>
首先,如果需要对话框,必须等待用户进行选择。所选内容会抛出一个您可以捕获的事件。在处理程序中,您可以执行文件处理。如果以下代码适合您,请尝试
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);
}
干杯,
罗布你好,罗布,非常感谢你的帮助。我在这个问题上花了好几天的时间,并且得到了课程、模型和各种各样的东西来正确处理这个问题。我知道有一个简单的方法,这正是我想要的。谢谢你不知道我现在有多高兴,有什么办法可以帮你吗!