JAXB повторно использовать класс из очень похожего заголовка XSD (JAVA) - PullRequest
0 голосов
/ 20 февраля 2020

Мы обрабатываем XML сообщений (типа A, B, C ...), все типы сообщений имеют одинаковый заголовок, отличается только часть тела.

Ищем рекомендуемый способ обработки или, возможно, повторно использовать сгенерированный класс заголовка из очень похожего сообщения XSD. Единственным отличием является схема расположения элемента тела (разные XSD IN_typeA.xsd или IN_typeB.xsd, ...). Существует 10 типов телосложения и заголовок одинаковый.

MessageA.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:in="http://somedomain.com/MsgIn" elementFormDefault="unqualified" attributeFormDefault="unqualified">
    <xs:import namespace="http://somedomain.com/MsgIn"      schemaLocation="IN_typeA.xsd"></xs:import>
    <xs:element name="header">
        <xs:complexType>
            <xs:choice>
                <xs:element name="..." type="..."></xs:element> //lot of header elements same in MessageA and MessageB
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="body">
        <xs:sequence>
            <xs:element name="msgIN" type="in:Elem" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

MessageB.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:in="http://somedomain.com/MsgIn"   elementFormDefault="unqualified" attributeFormDefault="unqualified">
    <xs:import namespace="http://somedomain.com/MsgIn"      schemaLocation="IN_typeB.xsd"></xs:import>
    <xs:element name="header">
        <xs:complexType>
            <xs:choice>
                <xs:element name="..." type="..."></xs:element> //lot of header elements same in MessageA.xsd and MessageB.xsd
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="body">
        <xs:sequence>
            <xs:element name="msgIN" type="in:Elem" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

Может быть найдено другое объявление in: Elem в соответствующем (IN_typeA.xsd или IN_typeB.xsd).

...