在Flex中添加三个或更多XMLLISTCollections

时间:2011-04-20 13:22:07

标签: xml flex

我有一个XML结构:

<xml>
  <a>
   <name>A</name>
   <schl>AB</schl>
   </a>
  <a>
   <name>B</name>
<schl>BC</schl>
  </a>
  <b>
   <name>C</name>
   <schl>CD</schl>
   </b>
    <c>
     <name>D</name>
      <schl>DE</schl>
   </c>
</xml>

现在,我需要一个XMLListCollection变量,它应该只包含元素a,b和c的名称元素。 所以,我试过这样的事情:

var combXml:XMLListCollection  = new XMLListCollection();
combXml.addItem(new XMLListCollection(xml.a.name);
combXml.addItem(new XMLListCollection(xml.b.name);
combXml.addItem(new XMLListCollection(xml.c.name);

然后将其传递给dataprovider ..

treeDP.dataProvider = combXml;

但是我收到了一个错误。

有谁知道如何将这些元素组合到combXml中?

1 个答案:

答案 0 :(得分:2)

您可以直接将一个XML源用于3个ComboBoxes

<mx:ComboBox id="a" dataProvider="{myXml.a}" labelField="name"/>
<mx:ComboBox id="b" dataProvider="{myXml.b}" labelField="name"/>
<mx:ComboBox id="c" dataProvider="{myXml.c}" labelField="name"/>

myXml 是xml varaiabe, myXml.a 返回 XmlList 对象

等于

var axList:XMLList = myXml.a;

编辑:要获取所有元素[a,b,c] 名称,您应该将其用作

<mx:ComboBox id="d" dataProvider="{XML(myXml).elements('*').name}" labelField="name"/>

希望有所帮助