Создать класс JAXB с константой из файла схемы XML и привязкой XJB - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время мне приходится жестко кодировать версию схемы (или анализировать ее) вручную в коде Java при работе с сгенерированными классами JAXB. Это может легко привести к ошибкам при изменении версии схемы XML и может показаться неправильным. Я хочу указать версию схемы в схеме и позволить xjc сгенерировать константу в соответствующем классе корневых элементов.

Я не нашел подключаемый модуль JAXB или механизм привязки, который я мог бы использовать для удовлетворения этих требований.

example.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:my="my:namespace:v1"
    targetNamespace="my:namespace:v1"
    xmlns="my:namespace:v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"

    <!-- Use this version information in generated class! -->
    version="1.0">

    <xs:element name="root" type="RootType"/>

    <xs:complexType name="RootType">
        <xs:sequence>
            <xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="xsdVersion" type="xs:string" use="required"/>
        [...]
</xs:schema>

Сгенерированный RootType.class:

[...]
public class RootType {
    protected String name;
    protected String xsdVersion;
    // This shall be generated too
    public static final GENERATED_WITH_VERSION = "1.0";
    [...]
}
...