2

我有这个XSD:(片段)

    <xs:complexType name="complexA">
        <xs:sequence>
            <xs:element ref="abstractA" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:element name="abstractA" abstract="true"/>

    <xs:element name="concreteA" type="concreteComplexA" substitutionGroup="abstractA"/>

    <xs:complexType name="concreteComplexA">
        <xs:attribute name="class" type="classId" use="required"/>
        <xs:attribute name="property" type="namingId" use="required"/>
        <xs:attribute name="value" type="xs:string" use="required"/>
    </xs:complexType>

JAXB 输出一个名为的类concreteComplexA,我可以改为输出concreteA名称吗?

是第三方的XSD,所以不能修改。

谢谢!

你做。

4

1 回答 1

5

您可以使用外部绑定文件来控制生成的类的名称。例如,请参阅我对类似问题的回答:

JAXB 将 Java 对象映射到类型而不是元素的原因是,对于全局复杂类型(如您的示例),可能有许多全局元素引用它:

<xs:element name="concreteA" type="concreteComplexA" substitutionGroup="abstractA"/>
<xs:element name="anotherConcreteA" type="concreteComplexA" substitutionGroup="abstractA"/>

<xs:complexType name="concreteComplexA">
    <xs:attribute name="class" type="classId" use="required"/>
    <xs:attribute name="property" type="namingId" use="required"/>
    <xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
于 2011-07-22T13:05:04.290 回答