0

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

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

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

如果我做了这样的研究:

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

我不会得到任何结果,“aNode”将为空:/

有什么想法吗?

[编辑] 还有一些我无法理解的东西(我正在寻找 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”参数等于“a0KQ0000002PTN5MAO”方法调用“add_item_to_hierarchy”时,ac_hierarchy 看起来像:

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

var test:XML 已填充。

var test2:XML 未填充。

它正确地附加了Child。

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

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

var test:XML 已填充。

var test2:XML 已填充。

它也正确地附加了Child。

第三次,“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" 为空(虽然 "node.parentId" 值与之前的循环相同,并且 test2 正确填充)!!!

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

谢谢你的帮助。

4

1 回答 1

0

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

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

    var list:XMLList = new XMLList();
    列表[0] = <node id="1"/>;
    var 结果:XMLList = list.(@id == "1");

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

于 2011-06-22T10:21:28.723 回答