将XML绑定到Flex树的问题

时间:2009-01-23 20:24:15

标签: flex

我的XML的值如下:

<products>
  <product id="1" name="All Products">
    <code>000</code>
    <shortname>ALL</shortname>
    <cost>0.0</cost>
    <product id="2" name="Product Group A">
      <code>001</code>
      <shortname>A</shortname>
      <cost>0.0</cost>
      <product id="4" name="Product A">
        <code>11</code>
        <shortname>ProductA</shortname>
        <cost>0.4</cost>
      </product>
    </product>
  </product>
</products>

我通过调用xml.children()来声明一个XMLList,并将它绑定到一个树,如下所示:

var products:XMLList = xml.children()

<mx:Tree id="treeProducts" dataProvider="{products}" labelField="@name" width="100%" />

但是,我的树不知道要为哪个XML元素创建节点,因此我为每个元素获取节点,即:

-All Products
  - 000
  - ALL
  - 0.0
  - Product Group A
    - 001
    - A
    - 0

我真正想要的只是显示每个@name的{​​{1}}值:

  
      
  • 所有产品      
        
    • 产品组A      
          
      • 产品A
      •   
    •   
  •   

我错过了一些完全明显的东西吗?

1 个答案:

答案 0 :(得分:2)

如果您只是从树中收集节点,我认为E4X表示法是最好的方法:

xml..(@name != '')

(或某些此类,未检查准确性)

但是,这不会保留树结构。由于您需要树数据的特定视图,我建议应用ITreeDataDescriptor的实现,在其方法中过滤命名节点: