0

我有一个像这样的分层 xml 结构:

<employee name="AAA" group="1"..../>
    <employee name="BBB" group="1"...>
        <employee name="CCC" group="1".../>
     </employee>  
    <employee name="DDD" group="0"... />
    <employee name="EEE" group="0"... />
</employee>

我加载 XML,然后将数据传递给分层集合视图:

var model:XML = .... (load the data)
var hData:HierarchicalData = new HierarchicalData(model);           
hCol = new HierarchicalCollectionView(hData);

然后,我使用 hCol 作为自定义组件的 dataProvider。该组件不支持 dataDescriptor

我只想显示属性 group="1" 的项目。(本例中为 AAA、BBB 和 CCC)

我该怎么做?我使用 filterFunction 属性进行了测试,但它只过滤了根节点(我认为)我必须按该属性过滤所有 XML 项

提前致谢

克里斯蒂安

4

1 回答 1

0

我用它来过滤我的 XML 树,除了我只显示与我正在运行的搜索匹配的最终节点。您也可以对其进行修改以返回具有子节点的节点,但它为您提供了一些可以继续的东西,而不是 HierarchicalCollection

private function filterXML(itemXML:XML, mainXML:XML, text:String) : XML {
            if(itemXML.hasComplexContent()) {
                for each(var childXML : XML in itemXML.children()) {
                    filterXML(childXML, mainXML, text);
                }
            } else {
                var regex :RegExp = new RegExp(text, "gi");
                if(itemXML.@group.toXMLString().search(regex)!=-1){
                    mainXML.appendChild(itemXML);
                }
            }
            return mainXML;
        }
于 2013-09-06T23:59:56.887 回答