Привязки JAXB: свойства уже определены. Использовать чтобы разрешить этот конфликт. Более двух раз - PullRequest
0 голосов
/ 28 мая 2020

Я знаю, что уже существует проблема, связанная с похожей проблемой. Но мой случай немного отличается.

Я хочу использовать jaxb для создания Java -объектов путем синтаксического анализа xsd. Конечно, для решения этой проблемы мне в голову приходит jaxb. Процесс синтаксического анализа состоит не только из одного xsd. Таким образом, задействовано шесть XSD.

Один родительский XSD, который включает четыре других XSD. Каждый из этих четырех включает один и тот же XSD. Итак, иерархия следующая:

 main.xsd
 |__includes: child1.xsd ---\
 |__includes: child2.xsd ----\ includes: common.xsd
 |__includes: child3.xsd ----/
 |__includes: child4.xsd -- /

При компиляции проекта java с использованием:

mvn -U clean install

я получил ошибку:

com.sun.istack.SAXParseException2: Property "ClassID" is already defined. Use <jaxb:property> to resolve this conflict. 

Чтобы решить эту проблему Я пытаюсь ввести в файл привязки:

        <jxb:bindings schemaLocation="oaf-common-1.0.xsd" multiple="true" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package name="info.***.middleware.***.oaf.common" />
            </jxb:schemaBindings>
            <jxb:bindings node="//xs:attribute[@name='classname']">
                <jxb:property name="OAFClassnameProperty" />
            </jxb:bindings>
            <jxb:bindings node="//xs:attribute[@name='classid']">
                <jxb:property name="OAFClassidProperty" />
            </jxb:bindings>
            <jxb:bindings node="//xs:attribute[@name='schemeid']">
                <jxb:property name="OAFSchemeidProperty" />
            </jxb:bindings>
            <jxb:bindings node="//xs:attribute[@name='schemename']">
                <jxb:property name="OAFSchemenameProperty" />
            </jxb:bindings>
        </jxb:bindings>

Классы будут сгенерированы с другим именем, но поскольку xsd (oaf-common-1.0.xsd) будет включен четыре раза, ошибка повторяется.

Надеюсь, что кто-нибудь из вас сможет мне помочь.

...