如何从Actionscript Arraycollection读取XML属性?

如何从Actionscript Arraycollection读取XML属性?,xml,apache-flex,actionscript,arraycollection,Xml,Apache Flex,Actionscript,Arraycollection,我正在使用actionscript中的httpservice读取一个XML文件,并将其放入如下arraycollection(其中Reads是重复节点,data是根节点): 但是,我想更改im读取的xml文件的格式,将值作为属性而不是标记之间的值放入其中(我这样做的原因是xml文件非常庞大,而且这种方法每次读取只需要一行5个属性,而不是在单独的行上有5个打开和关闭标记) 它可以加载到数组集合中,但是如何访问属性? 在访问时间值之前,我要说: graphData.getItemAt(0).time

我正在使用actionscript中的httpservice读取一个XML文件,并将其放入如下arraycollection(其中Reads是重复节点,data是根节点):

但是,我想更改im读取的xml文件的格式,将值作为属性而不是标记之间的值放入其中(我这样做的原因是xml文件非常庞大,而且这种方法每次读取只需要一行5个属性,而不是在单独的行上有5个打开和关闭标记)

它可以加载到数组集合中,但是如何访问属性? 在访问时间值之前,我要说:

graphData.getItemAt(0).time
所以我想这可能很容易:

graphData.getItemAt(0).@time 
但是这不起作用,可以吗?

代码:

graphData=newarraycollection([event.result.data.reads])

只需创建一个AC,其中包含一个值,即XMLList。我不知道你为什么要这么做,但这可能不是你想的。这样做:

var graphData:XMLList = event.result.data.readings;
// Now get data for individual readings
trace("time for first reading", graphData[0].@time);
trace("time for second reading", graphData[1].@time);

实际上,刚刚看到的最佳解决方案可能是将数据加载为XML列表,这是唯一的方法吗?当您在以下行上删除调试断点时,graphData中会看到什么:graphData=new ArrayCollection([event.result.data.readings]);您应该能够在变量窗口中展开graphData,以查看ArrayCollection中每个元素的对象类型?您可能会看到如何纠正这个问题,E4X在Flex中的工作方式有点神秘,但如果它“看到”具有给定名称的多个节点,它将在数组集合中返回它们,否则它是一个对象,如果没有更多信息,很难说这里出了什么问题。为什么不使用XMLListCollection呢?或者将XML转换为值对象并将其放入ArrayCollection。或者更好的是,重新工作您的服务,使其通过AMF返回值对象,并且根本不处理w/XML。为此,我向您道歉,我给出的示例是针对XML文件中只有一项的情况。我尝试了你建议的方法,但是仍然不起作用,也许我尝试的xml格式不正确?如下所示:
另外,我是否需要将httpservice的格式更改为e4x?您肯定希望结果格式为e4x而不是object如果要使用XML语法在集合中导航/选择,不幸的是它不适用于对象。
var graphData:XMLList = event.result.data.readings;
// Now get data for individual readings
trace("time for first reading", graphData[0].@time);
trace("time for second reading", graphData[1].@time);