Фильтрация XMLList с использованием обозначения ".." - PullRequest
0 голосов
/ 22 июня 2011

Есть кое-что, что я не мог решить: когда я ищу определенный узел в списке XMLL, содержащем несколько уровней иерархии, фильтр никогда не ищет в верхнем родительском узле.

Например, если у меня есть деревокак это:

<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);
}

Когда я впервые вызываю параметр "add_item_to_hierarchy" с параметром "node.parentId", равным методу "a0KQ0000002PTN5MAO", переменная ac_hierarchy выглядит следующим образом:

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

var test:XML заполнен.

var test2: XML не заполнен.

Это правильно appendChild.

Во второй раз параметры "node.parentId" равны "a0KQ0000002PT8iMAG", и ac_hierarchy выглядит следующим образом:

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

var test: XML isзаполнено.

var test2: XML заполнен.

Это также правильно appendChild.

И в третий раз параметры "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 заполнен.

Но на этот раз переменная "test" равна нулю (хотя значение "node.parentId" совпадает с предыдущим циклом, а test2 заполнен правильно) !!!

Я скоро сломаю свой компьютер: /

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 22 июня 2011

Да, селекторы xml не проверяют корневой узел, но есть обходные пути:

  • Получите ваш родительский узел в прокси XMLList и найдите его:

    список переменных: XMLList = new XMLList ();
    list [0] = <идентификатор узла = "1" />;
    Результаты var: XMLList = list. (@ id == "1");

  • или просто проверьте родительский узел отдельно и добавьте к результатам поиска.

...