0

我有关注xsd

  ...
<xs:group name="space">
    <xs:sequence>
      <xs:element name="objects" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            Object definitions
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="object" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
                  Object definition
                </xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:group ref="spaceentry" />
                  <xs:element name="object" minOccurs="0" maxOccurs="1">
                    <xs:annotation>
                      <xs:documentation>
                        Object definition
                      </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                      <xs:group ref="createobject" />
                      <xs:attributeGroup ref="createobject" />
                          <xs:attribute name="state" type="componentstatelookup">
                            <xs:annotation>
                              <xs:documentation>
                                Object initial state
                              </xs:documentation>
                            </xs:annotation>
                          </xs:attribute>
                          <xs:attribute name="comment" type="comment" />
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
...

正如你所看到的,我有两个 <xs:element name="object" ... /> 在那里不会在 java 中很好地翻译有两个具有相同名称的类。我正在尝试使用 xjb 来翻译它们

<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xs="http://www.w3.org/2001/XMLSchema"
          version="1.0">
    <bindings schemaLocation="../xsd/libraries.xsd" version="1.0">
        <!-- Customise the package name -->
        <schemaBindings>
            <package name="be.celludriel.universegenerator.model.xml"/>
        </schemaBindings>

        <!-- rename the value element -->
        <bindings node="//xs:element[@name='race']">
            <property name="raceValue"/>
        </bindings>
        <bindings node="//xs:element[@name='job']/xs:complexType/xs:sequence/xs:choice/xs:element[@name='location']/xs:complexType/xs:sequence/xs:element[@name='policefaction']">
            <property name="policeFactionValue"/>
        </bindings>
        <bindings node="//xs:group[@name='space']/xs:sequence/xs:element/xs:complexType/xs:sequence/xs:element[@name='object']">
            <class name="SpaceObject"/>
        </bindings>
        <bindings node="//xs:group[@name='space']/xs:sequence/xs:element/xs:complexType/xs:sequence/xs:element[@name='object']/xs:complexType/xs:sequence/xs:element['object']">
            <class name="SpaceEntryObject"/>
        </bindings>
    </bindings>
</bindings>

但是我最终得到

Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.5.0:xjc (xjc) on project universe-generator: Illegal class inheritance loop.  Outer class SpaceObject may not subclass from inner class: SpaceObject

我想知道我在这里做错了什么,有人可以帮我解决吗?如何重命名 XJB 文件中的内部类?

4

0 回答 0