Создание объектов паскаля по XSD схмеме

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Создание объектов паскаля по XSD схмеме

Сообщение alexs » 25.12.2019 17:34:58

Кто либо таким занимался?
Или надо будет самому велосипедить?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение Pavia » 25.12.2019 20:24:57

Такого нету. Если сделаете выложите.
Лучше всего run-time создание.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 278
Зарегистрирован: 07.01.2011 12:46:51

Re: Создание объектов паскаля по XSD схмеме

Сообщение alexs » 26.12.2019 09:37:26

Pavia писал(а):Такого нету. Если сделаете выложите.

Похоже именно так и будет.
Pavia писал(а):Лучше всего run-time создание.

Вот это как?
Я планирую делать на базе своей библиотеки для сериализации объектов. Буду в итоге получать паскалевский модуль. Будет ли перенос всех правил валидации вводимых данных - пока не решил. Мне сейчас хотя бы структуру правильно формировать научиться. А то вручную это делать ...
Оформлю в виде отдельной утилиты для компиляции - по аналогии со своей же утилитой по переводу protobuf в паскаль.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение Ichthyander » 26.12.2019 11:10:38

Можно подглядеть у WST... Или даже использовать получится http://wiki.freepascal.org/Web_Service_Toolkit
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 551
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Создание объектов паскаля по XSD схмеме

Сообщение alexs » 26.12.2019 11:13:50

Ichthyander
Спасибо
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение alexs » 04.01.2020 11:59:18

Сделал.
Генерим по XSD схеме объекты паскаля для работы с данными из XML
В первом приближении вроде работает.
Тесты проходят - xmllint соглашается с данными.
Исходники https://github.com/lalexs75/protobuf-fpc в папке compiler/xsd_pas
там же примеры схем, на которых я проверял.
сам конвертер в 2х видах - виузальная утилита и консольное приложение.
для сериализации использую пакет xmlobjects.lpk из этого же репозитария.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение alexs » 09.07.2020 16:57:42

Начал работу над поддержкой сериализации объектов в виде JSON.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение Ichthyander » 09.07.2020 20:07:01

alexs писал(а): сериализации объектов в виде JSON

Нативный fpjsonrtti это не то? Я этим модулем пользуюсь для сериализации и десериализации JSON
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 551
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Создание объектов паскаля по XSD схмеме

Сообщение alexs » 10.07.2020 18:39:38

В принципе смысл тот же
Я его раньше не видел. Надо попробовать.
Мой родился как ответвление от сериализации XML. А там я в первую очередь делал создание объектов на основе XSD схем.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение alexs » 11.07.2020 19:07:54

Ichthyander писал(а):
alexs писал(а): сериализации объектов в виде JSON

Нативный fpjsonrtti это не то? Я этим модулем пользуюсь для сериализации и десериализации JSON

Попробовал
В постейших случаях поведение одинаково.
Но если надо обрабатывать не заполненные поля - тут уже штатным не получается.
Также некоторые сложные json ответы от других сервисов тоже не получается штатным смоделировать.
Ну и открытые массивы он не умеет.
Для меня эти 3 пункта - критичны.

Ну и тот факт, что я планирую компилятор xsd доработать для вывода json объектов - то же будет хорошо.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3943
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание объектов паскаля по XSD схмеме

Сообщение serbod » 14.07.2020 11:13:53

Если интересна сериализация в runtime, то у меня есть пара новых типов Variant - VarDict (словарь, ассоциативный массив) и VarList (список, динамический массив).

Пример использования VarDict:
Код: Выделить всё
var MyDict: Variant;
MyDict := VarDictCreate();
MyDict.Field1 := 1;
MyDict.Field2 := 'test';
WriteLn(MyDict);  //  {Field1:1,Field2:"test"}


То есть, у переменной типа Variant можно "на ходу" создавать и использовать новые поля типа Variant, в том числе вложенные VarDict и VarList.

Методы:
GetCount() - get stored items count
GetValue(Index) - get item value for given Index (0..GetCount()-1)
GetName(Index) - get item name for given Index (0..GetCount()-1)
GetNameIndex(Name) - get index of item Name, or <0 if Name not found


Исходники:
https://github.com/serbod/NovaLib/blob/ ... rDicts.pas
https://github.com/serbod/NovaLib/blob/ ... rLists.pas

Модули для сериализации:
https://github.com/serbod/NovaLib/blob/ ... zeBase.pas - базовый класс сериализатора
https://github.com/serbod/NovaLib/blob/ ... onUnit.pas - сериализация JSON
https://github.com/serbod/NovaLib/blob/ ... deUnit.pas - сериализация Bencode
Аватара пользователя
serbod
постоялец
 
Сообщения: 448
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск


Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru