Парсим XML двумя способами (плохим и хорошим)

Берем XML такого вида:

<?xml version="1.0" encoding="UTF-8"?>
<tasks id="tasks">
        <task id="cureCancer">
                <title>Излечить рак</title>
                <description>Написать программу, которая излечит рак</description>
        </task>
        <task id="makeCoffee">
                <title>Сварить кофе</title>
                <description>Написать программу, которая сварит кофе</description>
        </task>
</tasks>

Загружаем его и парсим с помощью стандартного класса Xml. Этот класс не относится к API флэш-плеера, а является кроссплатформенным. То есть, он одинаково используется в коде для Flash, JavaScript и Neko. (Xml класс из API флэш-плеера тоже можно использовать).

Смотрим, как он применяется, пробуем -- получается что-то жуткое:

var xml:Xml = Xml.parse(event.target.data).firstElement();
this.tasks = new Array();

for(node in xml.elementsNamed('task')
{
        var task = new Task();

        for(titleNode in node.elementsNamed('title')) task.title = titleNode.firstChild().nodeValue;
        for(descriptionNode in node.elementsNamed('description') task.description = descriptionNode.firstChild().nodeValue;
       
        this.tasks.push(task);
}

Какие-то кошмарно громоздкие конструкции. Неужели Николас сам пользуется таким интерфейсом? Нет, конечно. Порылся на haxe.org и нашел приятный класс haxe.xml.Fast тоже с примером использования. Вот это совсем другое дело:
var xml:Xml = Xml.parse(event.target.data).firstElement();
var fdata = new Fast(xml);

this.tasks = new Array();

for(node in fdata.nodes.task)
{
        var task = new Task();
        task.title = node.node.title.innerData;
        task.description = node.node.description.innerData;
        this.tasks.push(task);
}