2014-09-23 66 views
4

我得到以下错误:如果一个类@XmlElement属性,也不能有@XmlValue财产

If a class has @XmlElement property, it cannot have @XmlValue property 

更新类:

@XmlType(propOrder={"currencyCode", "amount"}) 
    @XmlRootElement(name="priceInclVat") 
    @XmlAccessorType(XmlAccessType.FIELD) 
    public class PriceInclVatInfo { 

    @XmlAttribute 
    private String currency; 
    @XmlValue 
    private String currencyCode; 
    private double amount; 

    public PriceInclVatInfo() {} 

    public PriceInclVatInfo(String currency, String currencyCode, double amount) { 
     this.currency = currency; 
     this.currencyCode = currencyCode; 
     this.amount = amount; 
    } 

    public String getCurrency() { 
     return currency; 
    } 

    public void setCurrency(String currency) { 
     this.currency = currency; 
    } 

    public String getCurrencyCode() { 
     return currencyCode; 
    } 

    public void setCurrencyCode(String currencyCode) { 
     this.currencyCode = currencyCode; 
    } 

    public double getAmount() { 
     return amount; 
    } 

    public void setAmount(double amount) { 
     this.amount = amount; 
    } 

} 

我想才达到以下输出,带有元素属性和值:

<currencyCode plaintext="£">GBP</currencyCode> 

我该如何做到这一点?如果我有@XmlRootElement(name =“priceInclVat”),可能吗?

回答

12

对于错误:

If a class has @XmlElement property, it cannot have @XmlValue property

既然你指定的字段访问,默认情况下未注释amount场被视为具有@XmlElement

private double amount; 

您可以执行下列操作之一:

  1. 标注amount@XmlAttribute
  2. 标注amount@XmlTransient
  3. @XmlAccessorType(XmlAccessType.FIELD)更改为@XmlAccessorType(XmlAccessType.NONE),以便只有注释的字段被视为映射。

How can I achieve this? Is it possible if I have @XmlRootElement(name="priceInclVat")?

可以在JAXBElement实例包的PriceInclVatInfo实例以覆盖在根元素和封送。

+0

谢谢,我用@XmlAttribute注解了数量,并解决了我的问题。 – Martin 2014-09-24 08:15:50

+0

XmlTransient帮助了我,谢谢。 – 2016-05-20 06:58:10

相关问题