我无法解决一些问题:当我搜索包含多个层次结构的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正确填充)!
我很快就会破坏我的电脑:/
感谢您的帮助。
答案 0 :(得分:0)
是的,xml选择器不检查根节点,但有解决方法:
将您的父节点放入代理XMLList并搜索它:
var list:XMLList = new XMLList();
list [0] =&lt; node id =“1”/&gt ;;
var results:XMLList = list。(@ id ==“1”);
或单独检查父节点并添加到搜索结果中。