Flex XMLListCollection Iteration Конкатенация собранных значений - PullRequest
2 голосов
/ 17 февраля 2010

Я работаю в Flex Builder 3 с XMLListCollection и столкнулся с этой (должно быть простой) ошибкой разбора ...

Данные XMLListCollection:

<data>
    <term name="NUMBERS">
        <alt_form name="1"/>
    </term>
    <term name="LETTERS">
        <alt_form name="A"/>
        <alt_form name="B"/>
        <alt_form name="C"/>
    </term>
</data>

Функция AS:

private function interateThroughXML(myList:XMLListCollection):void {
    for each (var node : XML in myList){
        trace(node.@name + " is my list item name");
        if (node.alt_form.@name != null) {
            trace(node.alt_form.@name + " is my list SUB item name");
        }
    }
}

Выход:

NUMBERS - это имя моего списка
1 мой список SUB имя элемента
ПИСЬМА - это название моего списка
ABC мой список SUB имя элемента

Обратите внимание, что три значения имени подузла объединены как "ABC". Что мне нужно сделать по-другому, чтобы получить значения имен подпунктов (A, B и C) по отдельности?

1 Ответ

3 голосов
/ 17 февраля 2010

Вам также нужно перебрать подузлы. Вызов node.alt_form возвращает XMLList, поэтому итерируем по этому:

private function iterateThroughXML(myList:XMLListCollection):void {
    for each (var node : XML in myList){
        trace(node.@name + " is my list item name");
        for each (var subnode : XML in node.alt_form) {
            if (subnode.@name != null) {
                trace(subnode.@name + " is my list SUB item name");
            }
        }
    }
}
...