隐藏XML数据提供程序的最后一个子项(不显示在mx:Tree中)

时间:2010-04-06 16:42:37

标签: flex actionscript

我有一个分层的XML数据,我想把它显示为树。 XML数据是这样的:

<services>

  <service name="TestService" endpoint="">
    <method name="sayHi">
      <parameter name="firstName" />
      <parameter name="lastName" />
    </method>
    <method name="sayGoodbye">
      <parameter name="firstName" />
      <parameter name="lastName" />
    </method>
  </service>

  <service name="AnotherTestService">
    <method name="getName" />
    <method name="setName">
      <parameter name="name" />
    </method>
  </service>
</services>

但是,我不想在树中显示最后的元素(parameters),因为它不是要显示,但它必须在那里。

关于如何实现这一目标的任何建议?我正在考虑扩展DefaultDataDescriptor或创建一个实现ITreeDataDescriptor的类。在这种情况下哪种方法适合?

1 个答案:

答案 0 :(得分:1)

显然,这很容易。只需从DefaultDataDescriptor覆盖isBranch方法。

package
{
  import mx.controls.treeClasses.DefaultDataDescriptor;

  public class ServiceDataDescriptor extends DefaultDataDescriptor
  {
    public override function isBranch(
        node:Object, model:Object = null):Boolean
    {
      var xmlNode:XML = new XML(node);
      if (node.localName() == "method")
        return false;
      else
        return super.isBranch(node, model);
    }
  }
}