Получить последнее появление узла - PullRequest
1 голос
/ 01 апреля 2012

С учетом

<nodeList>
    <crazyNode>Data to be overwrited</crazyNode>
    <simpleNode>Normal data</simpleNode>
    <crazyNode>Actual data</crazyNode>
</nodeList>

Я хочу получить последний crazyNode (тот, который содержит Фактические данные ).

Я знаю, как получить доступ к первому узлу, например:

nodeList.crazyNode[0]

И я думаю, что решение будет

nodeList.crazyNode[nodeList.crazyNode.length() - 1]

Но по какой-то причине мне не нравится это делать, слишком многословно, и, возможно, есть метод более элегантный.

Спасибо

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Вы можете использовать что-то вроде:

nodeList.crazyNode.(childIndex()==length()-1);

Хотя это не может быть "красивее" ...

1 голос
/ 01 апреля 2012

Вы можете изменить код, чтобы сделать его более читабельным, но это способ сделать это. Поскольку сама проблема заключается в получении фактического индекса, вы можете просто объявить новую переменную для хранения этого значения, например:

var lastCrazyNodeIndex: int = nodeList.crazyNode.length() - 1;

Затем вы можете написать метод для получения последнего элемента, вот идея:

public function getLastCrazyNode(nodeList:XML):Object
{
    var lastCrazyNodeIndex: int = nodeList.crazyNode.length() - 1;

    if( lastCrazyNodeIndex != -1 )
        return nodeList[ lastCrazyNodeIndex ];

    return null;
}

Даже если это та же идея, она более читаема.

...