cxf-xjc-плагин не генерирует Java-классы из-за столкновения в классе ObjectFactory

Я не получил класс, сгенерированный с помощью плагина cxf-xjc maven для Java из-за следующей ошибки:

[ОШИБКА] Два объявления вызывают конфликт в классе ObjectFactory. строка 21 файла:/C:/../IdeaProjects/CXFDocInstanceGenerator/XSDToClassGenerator/src/main/resources/IntegralAdmission_bis.xsd

Есть 3 XSDS, участвующих в генерации

  • PExGeneraReport_bis.xsd (который использует два других ниже)
  • PartialAdmission_bis.xsd
  • IntegralAdmission_bis.xsd

последние два xsd создают конфликт для следующего элемента:

<xs:group name="RootGroup">
    <xs:sequence>
        <xs:element name="modulo" type="Modulo">
        </xs:element>
    </xs:sequence>
</xs:group>

содержится в обоих xsds (PartialAdmission_bis.xsd и IntegralAdmission_bis.xsd)

Я использовал следующее последнее условие внешнего связывания: чтобы решить проблему (вместе со многими другими попытками) без успеха!

<jxb:bindings schemaLocation="IntegralAdmission_bis.xsd">
    <jxb:bindings node="//xs:element[@name='modulo']">
        <jxb:factoryMethod name="ModuloAccoglimentoIntegrale"/>
    </jxb:bindings>
</jxb:bindings>

Помимо имени factoryMethod я использую также jxb:class и jxb:elementName без успеха. Классы не создаются

Изменение имени элемента в одной настройке xsd:

xs: element name = " moduloIA " type = "Modulo"

решает проблему, но мне нужно сохранить 'modulo' в качестве имени элемента xml для маршалинга, и поэтому мне нужно изменить только привязку к классам java или имени метода! Любая идея о правильной привязки, чтобы установить, чтобы решить проблему?

В ответ на комментарии @lexicore ниже я сообщаю о [mcve] проекта: pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>

    <groupId>CXFDocInstanceGenerator</groupId>
    <artifactId>MCVE_XSDToClassGenerator</artifactId>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.9</source>
                        <target>1.9</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <version>2.3.0</version>
                <configuration>
                    <extensions>
                        <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
                    </extensions>
                </configuration>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>xsdtojava</goal>
                        </goals>
                        <configuration>
                            <sourceRoot>${project.build.sourceDirectory}</sourceRoot>
                            <xsdOptions>
                                <xsdOption>
                                    <xsd>${project.basedir}/src/main/resources/PExGeneraReport_bis.xsd</xsd>
                                    <!--bindingFile>${project.basedir}/src/main/resources/dgPEXGR.xjb</bindingFile-->
                                    <extension>true</extension>
                                </xsdOption>
                            </xsdOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
    </dependencies>

</project>

основной xsd для привязки PExGeneraReport_bis.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:aci="urn://IntegralAdmission_bis"
           xmlns:acp="urn://PartialAdmission_bis"
           xmlns="urn://GenerateReport"
           targetNamespace="urn://GenerateReport"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
>
    <xs:import namespace="urn://IntegralAdmission_bis" schemaLocation="IntegralAdmission_bis.xsd"/>
    <xs:import namespace="urn://PartialAdmission_bis" schemaLocation="PartialAdmission_bis.xsd"/>

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

    <xs:complexType name="Root">
        <xs:sequence>
            <xs:element name="frontespizioPostel" type="xs:string"/>
            <xs:group ref="RootGroup"/>
        </xs:sequence>
    </xs:complexType>

    <xs:group name="RootGroup">
        <xs:sequence>
            <xs:choice>
                <xs:group ref="aci:RootGroup"/>
                <xs:group ref="acp:RootGroup"/>
            </xs:choice>
            <!--xs:element name="metadati" type="Metadati"/-->
        </xs:sequence>
    </xs:group>

</xs:schema>
  • первый импортированный xsd IntegralAdmission_bis.xsd

    <xs:element name="root" type="Root"/>
    
    <xs:complexType name="Root">
        <xs:sequence>
            <xs:element name="frontespizioPostel" type="xs:string"/>
            <xs:group ref="RootGroup"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:group name="RootGroup">
        <xs:sequence>
            <xs:element name="modulo" type="Modulo">
            </xs:element>
        </xs:sequence>
    </xs:group>
    
    <xs:complexType name="Modulo">
        <xs:sequence>
            <xs:element name="denominazioneAzienda" type="xs:string"/>
            <xs:element name="indirizzo" type="xs:string"/>
            <xs:element name="pecAzienda" type="xs:string"/>
            <xs:element name="dataProvvedimento" type="xs:date"/>
            <xs:element name="tipoPrestazione" type="xs:string"/>
            <xs:element name="numeroProtocollo" type="xs:string"/>
            <xs:element name="numeroProvvedimento" type="xs:string"/>
            <xs:element name="annoProvvedimento" type="xs:string"/>
            <xs:element name="dataPresentazione" type="xs:date"/>
        </xs:sequence>
    </xs:complexType>
    

Второй конфликтует с xsd выше (IntegralAdmission_bis.xsd) PartialAdmission_bis.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0"
    xmlns="urn://PartialAdmission_bis"
    targetNamespace="urn://PartialAdmission_bis"
    elementFormDefault="qualified" 
    attributeFormDefault="qualified">

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

    <xs:complexType name="Root">
        <xs:sequence>
            <xs:element name="frontespizioPostel" type="xs:string"/>
            <xs:group ref="RootGroup"/>
        </xs:sequence>
    </xs:complexType>

    <xs:group name="RootGroup">
        <xs:sequence>
            <xs:element name="modulo" type="Modulo">
            </xs:element>
        </xs:sequence>
    </xs:group>

    <xs:complexType name="Modulo">
        <xs:sequence>
            <xs:element name="denominazioneAzienda" type="xs:string"/>
            <xs:element name="indirizzo" type="xs:string"/>
            <xs:element name="pecAzienda" type="xs:string"/>
            <xs:element name="dataProvvedimento" type="xs:date"/>
            <xs:element name="tipoPrestazione" type="xs:string"/>
            <xs:element name="numeroProtocollo" type="xs:string"/>
            <xs:element name="numeroProvvedimento" type="xs:string"/>
            <xs:element name="annoProvvedimento" type="xs:string"/>
            <xs:element name="dataPresentazione" type="xs:date"/>
            <xs:element name="causale" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

Связующий файл:

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xs="http://www.w3.org/2001/XMLSchema"
              version="2.1">
    <jxb:bindings schemaLocation="IntegralAdmission_bis.xsd">
        <jxb:bindings node="//xs:element[@name='modulo']">
            <jxb:factoryMethod name="ModuloAccoglimentoIntegrale"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

Каталоги проекта:

введите описание изображения здесь

0 ответов

Другие вопросы по тегам