Flex:将XML转换为具有多个节点的ArrayCollection

时间:2011-07-28 17:02:08

标签: xml flex arraycollection

我正在阅读一个XML文件,其中树的一个分支如下所示:

    <data id="Shallow" label="Show Shallow Imagery (1 m)">
      <layer name="Bathymetry" url="OtherImagery" type="Dynamic" legendurl="">
        <visiblelayers>1</visiblelayers>
        <visiblelayers>4</visiblelayers>
      </layer>
      <layer name="Backscatter" url="OtherImagery" type="Dynamic" legendurl="">
        <visiblelayers>2</visiblelayers>
      </layer>
      <layer name="PCA" url="BUIS_Imagery" type="Dynamic" legendurl="">
        <visiblelayers>3</visiblelayers>
        <visiblelayers>4</visiblelayers>
      </layer>
    </data>

用户使用radiobutton选择图层,在click事件中,我将图层(@ name == e.target.label).visiblelayers传递给将XML转换为ArrayCollection的函数。

 private function convertXMLtoArrayCollection(file:XMLList):ArrayCollection{
    var xml:XMLDocument = new XMLDocument(file);
    var decoder:SimpleXMLDecoder = new SimpleXMLDecoder;
    var data:Object = decoder.decodeXML((xml));
    var array:Array = ArrayUtil.toArray(data);

    return new ArrayCollection(array);
}

对于只有一个visiblelayers节点的“Backscatter”层,我得到了预期的ArrayCollection返回。 enter image description here

但是其他两个层返回一个ArrayCollection,其中添加了visibleLayers节点。 enter image description here

为什么不返回像这样的ArrayCollection? enter image description here

2 个答案:

答案 0 :(得分:3)

我最终使用以下函数返回一个适合我的代码的ArrayCollection:

private function convertXMLtoArrayCollection1(file:XMLList):ArrayCollection
{
    var arrcol:ArrayCollection = new ArrayCollection;

    for each (var value:* in file)
    {
        arrcol.addItem(value)
    }

    return arrcol;
}

答案 1 :(得分:0)

要在ActionScript示例中将XML转换为ArrayCollection或Array,请访问以下链接,并通过示例进行说明。

在ActionScript示例中将XML转换为ArrayCollection或Array http://javafws.blogspot.in/2013/12/xml-to-arraycollection-or-array-in.html