Ребята привет !
Стоит задача используя описание классов в XML типа такого
<?xml version="1.0" encoding="UTF-8"
<domain>
<model name="Account">
<element name="accountNumber" type="string">
<element name="balance" type="double">
</model>
<model .../>
</domain>
описанию
нагенерировать Kotlin классы типа таких
package aaa
import bbb.DF_NS
@XmlRootElement(name="Account", namespace=DF_NS)
@XmlAccessorType(XmlAccessorType.FIELD)
class Account {
@field:Element(name="AccountNumber", namespace=DF_NS)
var accountNumber: String = ""
@field:Element(name="Balance", namespace=DF_NS)
var balance: Double? = ""
constructor() {}
}
1. Предполагается, что сначала по xml описанию с помощью xslt создать xsd описание классов для jaxb.
2. Потом по xsd сгенерировать Kotlin классы.
Если с первой задачей справился с помощью Gradle плагина (eerohele/saxon-gradle) то со второй задачей не могу разобраться, подключил плагин (reaster/schema-gen), да kotlin классы генерирует, но почему то не могу его заставить генерировать аннотации, начиная даже с такой @XmlRootElement(name="Account", namespace=DF_NS)
Подскажите, какими вы бы пользовались плагинами Gradle для этой задачи ?
Здравствуйте, HAXT, Вы писали:
HAX>Подскажите, какими вы бы пользовались плагинами Gradle для этой задачи ?
Ты уверен что тебе обязательно Kotlin классы генерить? Вполне на практике достаточно генерить Java классы, например через
https://www.journaldev.com/1312/jaxb2-maven-plugin-xjc-example-generate-java-classes-xsd. И эти классы прекрасно как родные можно будет юзать из Kotlin. Если не подходит — придется искать готовый плагин (я за минуту не нашел), а если нет такого, можешь сам написать, это не так и сложно на деле.
А чего сразу из XML не нагенерить Kotlin-код? Можно банальный XSLT написать. Генерации Kotlin-кода из XSD нет. Можешь попробовать XJC доработать, исходники где-то в проекте Metro должны быть.