Парсим 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);
}

Комментарии

Спасибо за

Спасибо за способы, получилось загрузить

В первом

В первом примере, в цикле for не хватает закрывающей скобки.

haxe.xml.Fast создан

haxe.xml.Fast создан для распарсивания простых xml-файлов. Это как раз ваш случай, но если структура файла более сложная или xml надо генерировать, то тут его возможностей будет мало и понадобится стандартный xml-класс.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.