7

鉴于此 XSD:

<xsd:element name="ServiceList">
    <xsd:complexType>
        <xsd:sequence>
            ...
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:complexType name="ServiceList">
    <xsd:sequence>
        ...
    </xsd:sequence>
</xsd:complexType>

这两者之间的语义差异是什么?即命名elements 和complexTypes 是 a 的直接子级schema

我问的原因是我尝试在 XSD 中这样做:

<xsd:element name="AvailableServices" type="cm:ServiceList" />
<xsd:element name="ExistingServices" type="cm:ServiceList" />
<xsd:complexType name="ServiceList">
    <xsd:sequence>
        ...
    </xsd:sequence>
</xsd:complexType>

但是当它使用 Maven JAXB 插件编译成 Java 类时,我只能创建一个new ServiceList(). AvailableServices并且ExistingServices似乎在生成的类中甚至不存在。那么,这里发生了什么?

4

1 回答 1

2

类对应复杂类型

JAXB (JSR-222)中,Java 类对应于复杂类型。全局元素的命名复杂类型和匿名复杂类型对应于根级类。默认情况下,嵌套复杂类型生成为静态内部类。您可以更改此默认行为:

全局元素

如果全局元素与复杂类型(具有匿名复杂类型的全局元素)唯一关联,它将用 注释@XmlRootElement。对应于全局类型的全局元素将对应于类@XmlElementDecl中的注解ObjectFactory

了解更多信息

于 2012-11-01T14:47:51.433 回答