Генерация схемы xsd из файла xml

03.01.20

Разработка - Инструментарий разработчика

Утилита, генерирующая xsd схему на основании xml файла.

Скачать исходный код

Наименование Файл Версия Размер
Генерация схемы xsd из файла xml:
.jar 2,51Mb
77
.jar 2,51Mb 77 Скачать

Утилита разработана мной для экономии времени при проектировании XDTO пакета.


При отправке данных какому-либо сервису в Интернете зачастую они должны быть сериализованы. Здесь есть два варианта:

  1. Сервис использует SOAP. Вопросов с сериализацией возникать не должно (опустим те случаи, когда средства платформы не позволяют корректно прочитать описание сервиса).
  2. Сервис реализован согласно архитектуре REST API. В данном случае разработка "шаблона" для сериализации данных лежит на разработчике системы, которая обращается к сервису.

Рассмотрим простой пример. Нужно отправить данные некого документа учетной системы сервису, который имеет архитектуру REST. Есть адрес конечной точки и шаблон xml, согласно которому должен быть сериализован документ. Пусть он выглядит следующим образом.

 
 Шаблон сериализованного документа

Здесь есть несколько вариантов реализации такого "шаблона":

  •  
     Создание структуры данных программно
  • Создание пакета XDTO с нуля и последующее его использование в качестве "шаблона" структуры данных (подробнее)
  • Прототипирование пакета XDTO на основании схемы XSD 

Первые два варианта доступны "из коробки" 1С:Предприятие. Далее расскажу про реализацию третьего с использованием утилиты xml2xsd, написанной на языке Java (для запуска необходима JVM). Утилита имеет CLI интерфейс. Ниже список ключей, которые можно передать при запуске:

  • -i - путь к файлу xml (обязательный)
  • -o - путь к файлу xsd (если не указан, то схема будет сохранена в одной директории с исполняемым файлом)
  • -s - шаблон, согласно которому будет выполнена схема xsd. Доступны варианты Russian Doll (1), Salami Slice (2), Venetian Blind (3) (необязательный, по умолчанию 3). Подробнее о том, что это такое, можно почитать тут и тут.
  • -n - targetNamespace - целевое пространство имен схемы (необязательный, по умолчанию http://v8.default.com)

Приведу полученную схему по шаблону xml выше. Использовался дизайн схемы Venetian Blind, указано целевое пространство имен. Пример команды, которой можно это сделать

java -jar xml2xsd.jar -i d:\example.xml -n http://mynamespace.com

 
 Полученная схема xsd

После работы утилиты, полученную схему xsd можно импортировать в 1С:Предприятие в режиме Конфигуратор. Получится такой вот пакет XDTO

Я не просто употребил слово прототипирование, так как только разработчик схемы xsd (пакета XDTO) может знать, что некое поле имеет тип int, а не long или оно может быть пустым, а не обязательным к заполнению и т.д. Другими словами, такой пакет конечно можно использовать далее, но по факту это всего лишь заготовка. Также на качество генерируемой схемы влияет сложность файла xml. Удачи в разработке!

Проект доступен на github.

xsd xml java xdto сериализация

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124507    681    389    

732

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7707    24    6    

42

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4222    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2880 руб.

14.01.2013    178547    1083    0    

861

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99576    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18343    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23837    16    15    

33

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28291    3    10    

15
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2470 25.03.19 11:34 Сейчас в теме
Круто конечно. Но Liquid Studio 2018 же такое умеет
2. nbeliaev 829 25.03.19 11:48 Сейчас в теме
(1) Спасибо ) Конечно есть, есть еще сервисы в Интернете (в этом случае вообще ничего устанавливать не нужно )) )
starik-2005; +1 Ответить
6. oldcopy 173 26.03.19 15:22 Сейчас в теме
(1)
Круто конечно. Но Liquid Studio 2018 же такое умеет


Но только в коммерческой версии за $297.00.
3. Fragster 1139 25.03.19 12:59 Сейчас в теме
Использую xmlpad для тех же целей. Опять же - можно в визуальном редакторе поправить результат, да и куча других функций в наличии.
4. Vladimir Litvinenko 2872 25.03.19 19:16 Сейчас в теме
Раз уж здесь стали размещать ссылки на аналогичные инструменты, то тоже поделюсь ссылкой на решение, которое публиковалось ранее на Инфостарте: Автоматическое создание XSD-файла по выбранным типам объектов конфигурации для загрузки в XDTO пакет в 1С 8.3.

Но автору всё равно спасибо за альтернативу и открытые исходники, тем более на Java. Пока что таких материалов мало и они точно не лишние, а очень даже полезные.
5. nbeliaev 829 26.03.19 05:04 Сейчас в теме
(4) Спасибо за комментарий
Я видел этот инструмент, более того задавал вопрос автору в комментариях - но он по какой-то причине оставил это без внимания.
7. frkbvfnjh 787 28.03.19 10:41 Сейчас в теме
Invoice = New Structure;

General = New Structure;
General.Insert("currency", "USD");
Invoice.Insert("general", General);

Seller = New Structure;
Seller.Insert("legalName", "Trade LLC");
Invoice.Insert("seller", Seller);

WriteXML(XMLWriter, Invoice);


Я что то не понял, как такое возможно? Структуру же нельзя записать в XML
8. frkbvfnjh 787 28.03.19 11:03 Сейчас в теме
Как минимум нужно писать СериализаторXDTO.WriteXML
9. nbeliaev 829 28.03.19 12:01 Сейчас в теме
(8)Согласен, писал для общего понимания. Только СериализаторXDTO знает об объектах платформы.
Спасибо за замечние, поправлю.
10. frkbvfnjh 787 28.03.19 12:35 Сейчас в теме
11. tivanitsky 18 10.06.20 07:30 Сейчас в теме
12. VVi3ard 52 20.01.22 11:58 Сейчас в теме
Странно, импортировал схему из примера, и свойство Invoice загрузилось без типа, т.е. если отрыть свойства "свойства" invoice тип там пустой.
Нужно в начало добавить глобальный ns, т.е. будет вот так:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://v8.default.com" targetNamespace="http://v8.default.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
13. Ankare 92 24.05.22 12:57 Сейчас в теме
Добрый день.
Все хорошо, за исключением того что ссылочные данные не подхватили типы, и при экспорте в 1С указывается "ЛюбаяСсылка"

если я правильно понял, в xsd схеме в описании элемента сейчас так:
type="param"
а должно быть так:
type="tns:param"



в моем случае, из-за этого не читается контент из элемента подобной конструкции
<param name="Остатки">19</param>
Прикрепленные файлы:
14. Snouphruh 04.09.23 10:12 Сейчас в теме
(13) а не надо использовать такое в XML, где у тега указан атрибут и значение самого тэга. 1С такое адекватно не хочет обрабатывать.
либо используйте атрибуты тэга, либо просто значение тэга:
<param name="Остатки" value="19"/>

*** или

<param>
<name>Остатки</name>
<value>19</value>
</param>
Оставьте свое сообщение