Берем 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);
}