Re[5]: Почему D?
От: LCR Россия lj://_lcr_
Дата: 01.05.05 09:00
Оценка:
Здравствуйте, c-smile, Вы писали:

LCR>>Вот приходит большая XML-на из сетки, мы её можем без интеллектуальной работы руками превратить в нормальный объект класса языка D?


CS>Что такое "нормальный объект"? Это DOM построить? Все как обычно SAX parser -> DOM factory.

CS>Или я чего не понял?

Кусок нумбер 1.
    // obtain value of attribute "number"
    NamedNodeMap common_attrib = common_node.getAttributes();
    Node common_number = common_attrib.getNamedItem("number");
    if (common_number == null)
        continue; // ignore the node
    String s = common_number.getNodeValue();


Кусок нумбер 2.
    String s = xxx.Number; // ну или String s = xxx.getNumber();


В данном случае я этот xxx назвал "нормальным объектом". С ним работать легко и приятно. Класс создаётся на основе содержимого XSD, а объект — на основе содержимого конкретной XML. Это так называемый binding.

CS>Я наверное не понял вопрос. Что exactly означает "классы генерятся на лету"?

Хорошо, продолжим пример выше... Как такой binding можно реализовать на D? Вот у нас запущена программа. Прекрасно! К нам приходит по сети XSD. Мы можем вызвать генератор, он сгенерит файл с исходным кодом, затем мы можем вызвать компилятор — скомпилируется бинарный файл. Но теперь нужно создать объект этого класса — и вот тут мы приплыли. У нас нет инструментов для загрузки этого файла в программу, чтобы потом ему сделать newInstance. (То есть я как бы ждал аналога ClassLoader, теперь я понял что его не может быть принципиально).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.