JaxB将多个XMLType映射到单个类

时间:2014-06-13 08:49:08

标签: java jaxb

如何将两个名称相同但内容相同的XMLType映射到一个signle类。 从XSD生成的模型如下所示。我想介绍一个可以拥有XMLType卖家和买家的新类人员。

@XmlType(name = "Seller")
public class Seller {
   private Sting name;
   private Adress adress;
   ....


@XmlType(name = "Buyer")
public class Buyer {
   private Sting name;
   private Adress adress;
   ....

这就是我的xsd在使用时的样子:

<xs:complexType name="Business">
    <xs:sequence>
        <xs:element name="vendor" type="ram:Seller" form="unqualified" minOccurs="0"/>
        <xs:element name="customer" type="ram:Buyer" form="unqualified" minOccurs="0"/>
    </xs:sequence>  
</xs:complexType>

,定义看起来像这样。

<xs:complexType name="Seller">
    <xs:sequence>
        <xs:element name="name" type="udt:SType" form="unqualified" minOccurs="0"/>
        <xs:element name="address" type="udt:SType" form="unqualified" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

我想通过使用XML Adapter可以解决这个问题。但它会导致维持4个类而不是现在的2个类。

有没有办法让我最终只有一个班级?

1 个答案:

答案 0 :(得分:0)

希望这可能会有所帮助

public class Person {
private String name;
private Address address;
//getters & setters

}

@XmlAccessorType(XmlAccessType.FIELD)
public class Business {
@XmlElement(name="buyer")
private Person buyer;
@XmlElement(name="seller")
private Person seller;
//getters & setters

}