请问ComboBox如何绑定以httservice获取的数据(xml格式),要不要把XML转换成arrayCollection类型的?
还有,如何把httservice获取的数据(xml格式)转换成arrayCollection类型的,然后在绑定到组件上。给个参考代码。谢谢
[b]问题补充:[/b]
首先,感谢您的回答,但,我的问题:我想把httservice获取的数据(xml格式)转换成arrayCollection类型的,然后组建绑定arrayCollection类型数据,是这样的,可以为我解答吗?
晕,你有专门开问xml转Arraycollection了,看来是我误导你了,Arraycollection只是绑定的一种选择而已,xml也是完全可以作为数据源的,建议你把对应的一小段xml发上来,我来看看,按照我们项目中的写法,分不同情况xml和Arraycollection都会使用绑定,下面我写一段我在xml的处理方式
[code="xml"]
mx:Script
<![CDATA[
import mx.collections.*;
[Bindable] public var _menuBarCollection:XMLListCollection;
]]>
/mx:MenuBar
[/code]
xml我是转换成XMLListCollection操作的,其实也不一定需要那样,注意labelFiled的写法啊,如果是xml格式的对应的属性一定要加上@
xml转XMLListCollection很简单,直接new XMLListCollection(需转换的xml);
如果你要Array的话,那就直接修改httpService的返回值的格式
[code="java"]
resultFormat 属性
resultFormat:String []
指示如何反序列化由 HTTP 调用返回的结果的值。该项目的值根据以下条件确定:
返回的是 XML 还是名称/值对。
访问结果的方式;可以将结果作为 object、text 或 XML 进行访问。
默认值为 object。允许使用的值包括:
object 返回的值为 XML 并且按照 ActionScript 对象树分析。此为默认。
array 返回的值是 XML 并且按照 ActionScript 对象树分析。但是,如果顶级对象不是数组,将创建一个新数组并且将结果设置为第一个项目。如果 makeObjectsBindable 为 true,则该数组将被包装在 ArrayCollection 中。
xml 返回的值为 XML 并且作为 ActionScript XMLnode 对象中的文本 XML 返回。
flashvars 返回的值是包含由 & 符号分隔的名称=值对的文本,该文本被分析为 ActionScript 对象。
text 返回的值为文本并且未经处理。
e4x 返回的值为 XML 并且作为 ActionScript XML 对象中的文本 XML 返回,可以使用 ECMAScript for XML (E4X) 表达式进行访问。
[/code]
[code="xml"]
<?xml version="1.0" encoding="utf-8"?>
mx:Script
<![CDATA[
private function initializeHandler(event:Event):void {
countriesService.send();
}
private function changeHandler(event:Event):void {
statesService.send();
}
]]>
/mx:Script
mx:request
{country.value}
/mx:request
/mx:HTTPService
mx:VBox
change="changeHandler(event)" />
/mx:VBox
/mx:Application
[/code]
其他方法还有,http://bbs.airia.cn/FLEX/thread-4946-1-1.aspx
补充一下,你上面的ComboBox如果是xmlListCollection的话只要注意labelFiled属性需要加上@就好