JAXB Java和XSD映射

JAXB Java和XSD映射,java,xml,xsd,jaxb,marshalling,Java,Xml,Xsd,Jaxb,Marshalling,在我的一个项目中,我使用JAXB2 marshaller,使用契约优先的web服务,从XML模式生成对象 一切正常。但是,我有一个“代码可用性”问题。让我给你举个例子 模式: <xs:complexType name="personContractAlertListType"> <xs:sequence> <xs:element ref="PersonContractAlert" minOccurs="0" maxOccurs="unboun

在我的一个项目中,我使用JAXB2 marshaller,使用契约优先的web服务,从XML模式生成对象

一切正常。但是,我有一个“代码可用性”问题。让我给你举个例子

模式:

<xs:complexType name="personContractAlertListType">
    <xs:sequence>
        <xs:element ref="PersonContractAlert" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:complexType>


<xs:element name="PersonContractAlertsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="PersonContractAlertList"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

这有点长

我的问题是:如何摆脱
getPersonContractAlertListType()
并直接转到:
PersonContractAlertsResponse.getPersonContractAlert()

因为这个包装器元素实际上只用于XSD,所以我的Java对象中不需要它

换言之,我们有:

<Element1>
<Wrapper>
<Element2/>
</Wrapper>
</Element1>

我希望它在Java中映射到:
Element1.getElement2()

也许使用JAXB适配器。记住,我不想触摸生成的对象。这必须在封送器设置(Adapter、interceptor等)或XSD中完成(可能有一些设置需要操作)

非常感谢

更新:

我找到了一些绑定操作的教程:


我将研究并尝试使用JAXB绑定。

要获得所需的对象模型,可以在中使用基于XPath的映射扩展


我不确定您的具体情况,但一般来说,额外键入30个字符的成本可能不足以证明搜索解决方案的合理性。特别是因为Eclipse将自动完成该方法调用

但问题是,我是否可以在不更改生成的类的情况下实现这一点。要在XML和所需对象之间切换,需要一个XmlAdapter和一个自定义项来利用它。更改您的模型可能会更干净。该链接现在已关闭
<Element1>
<Wrapper>
<Element2/>
</Wrapper>
</Element1>