使用“..”表示法过滤XMLList

时间:2011-06-22 08:10:21

标签: flex filter xmllist

我无法解决一些问题:当我搜索包含多个层次结构的XMLList中的特定节点时,过滤器永远不会在顶级父节点中搜索。

例如,如果我有这样的树:

<node id="a0KQ0000002PTN5MAO" parentId="">
    <node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO" />
</node>

如果我做了这样的研究:

var aNode = ac_hierarchy.source..node.(@id == "a0KQ0000002PTN5MAO")[0];

我没有结果,“aNode”将为null:/

任何想法?

[编辑] 还有一些我无法理解的东西(我正在寻找2天:/):

我使用下面的方法递归地将节点添加到ac_hierarchy:

private function add_item_to_hierarchy(node:Node_vo):XML {
    var firstNode:XML = ac_hierarchy.getItemAt(0) as XML;
    var parentNode:XML;     

    if (firstNode.@[Node_vo.att_id] == node.parentId)
        parentNode = firstNode;
    else
        parentNode = ac_hierarchy.source..node.(@[Node_vo.att_id] == node.parentId)[0];


    var test:XML = ac_hierarchy.source..node.(@[Node_vo.att_id] == node.parentId)[0];
    var test2:XML = ac_hierarchy.source..node.(@[Node_vo.att_id] == "a0KQ0000002PT8iMAG")[0];

    newXmlNode = node.toXML();

    // Add the current node to his parent node
    parentNode.appendChild(newXmlNode);
}

第一次使用“node.parentId”参数调用“add_item_to_hierarchy”等于“a0KQ0000002PTN5MAO”方法时,ac_hierarchy看起来像:

<node id="a0KQ0000002PTN5MAO" parentId="" />

var test:填充了XML。

var test2:未填充XML。

正确追加儿童。

第二次,“node.parentId”参数等于“a0KQ0000002PT8iMAG”,ac_hierarchy看起来像:

<node id="a0KQ0000002PTN5MAO" parentId="">
    <node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO"/>
</node>

var test:填充了XML。

var test2:填充了XML。

它也正确地追加孩子。

第三次,“node.parentId”参数再次等于“a0KQ0000002PT8iMAG”,ac_hierarchy看起来像:

<node id="a0KQ0000002PTN5MAO" parentId="">
    <node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO">
        <node id="a0KQ0000002PTL9MAO"/>
    </node>
</node>

var test:XML未填充。

var test2:填充了XML。

但这次,var“test”为null(尽管“node.parentId”值与前一个循环相同,test2正确填充)!

我很快就会破坏我的电脑:/

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

是的,xml选择器不检查根节点,但有解决方法:

  • 将您的父节点放入代理XMLList并搜索它:

    var list:XMLList = new XMLList();
    list [0] =&lt; node id =“1”/&gt ;;
    var results:XMLList = list。(@ id ==“1”);

  • 或单独检查父节点并添加到搜索结果中。