JAXB中一个@XmlAttribute的两个@XmlJavaTypeAdapters?
我有一门课是这样的:JAXB中一个@XmlAttribute的两个@XmlJavaTypeAdapters?,java,jaxb,Java,Jaxb,我有一门课是这样的: @XmlRootElement(name = "PricingGroup") public class PricingGroup { ... @XmlAttribute(name = "partyName") @XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class) private List<BilltoCustomer> billtoCustomers = n
@XmlRootElement(name = "PricingGroup")
public class PricingGroup {
...
@XmlAttribute(name = "partyName")
@XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class)
private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();
@XmlAttribute(name = "partyName")
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
private PartyName partyName;
...
}
@XmlRootElement(name=“PricingGroup”)
公共类PricingGroup{
...
@xmldattribute(name=“partyName”)
@XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class)
私有列表billtoCustomers=new ArrayList();
@xmldattribute(name=“partyName”)
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
私人PartyName PartyName;
...
}
JAXB似乎无法为一个属性映射两个@XmlJavaTypeAdapter
s(这里是partyName
)。如果我注释掉billtoCustomers上的注释或partyName上的注释,则从XML读取另一个成员变量时不会出现问题
如何同时获取这两个值?您可以映射其中一个属性(
partyName
),然后使用afterUnmarshal
事件派生其他属性(billToCustomers
):
@XmlRootElement(name=“PricingGroup”)
公共类PricingGroup{
...
@XmlTransient
私有列表billtoCustomers=new ArrayList();
@xmldattribute(name=“partyName”)
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
私人PartyName PartyName;
解组后无效(解组器u,对象父对象){
//从partyName派生billToCustomers
}
...
}
当您将两个字段映射到同一个属性时,您希望发生什么?我只从XML中读取。将@xmltransive
添加到其中一个字段也不起作用。
@XmlRootElement(name = "PricingGroup")
public class PricingGroup {
...
@XmlTransient
private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();
@XmlAttribute(name = "partyName")
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
private PartyName partyName;
void afterUnmarshal(Unmarshaller u, Object parent) {
// Derive billToCustomers from partyName
}
...
}