我試圖來解讀這種XML的:JAXB和解組XML具有相同的標籤名稱但不同的結構
<result>
<avance>0.0000</avance>
<operation_status>0</operation_status>
<service>Bank Account</service>
<service>
<min_amount>1.00</min_amount>
<max_amount>1499.00</max_amount>
<currency>USD</currency>
</service>
</result>
我創建這種類型結構:
public class Result {
private BigDecimal avance;
private Integer operationStatus;
private String serviceDesc;
private Service service;
@XmlElement(name = "service")
public String getServiceDesc() {
return serviceDesc;
}
public void setServiceDesc(String serviceDesc) {
this.serviceDesc = serviceDesc;
}
@XmlElement(name = "service")
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}
@XmlElement(name = "avance")
public BigDecimal getAvance() {
return avance;
}
public void setAvance(BigDecimal avance) {
this.avance = avance;
}
@XmlElement(name = "operation_status")
public Integer getOperationStatus() {
return operationStatus;
}
public void setOperationStatus(Integer operationStatus) {
this.operationStatus = operationStatus;
}
}
和Service
外觀像這樣:
@XmlRootElement
public class Service {
private BigDecimal minAmount;
private BigDecimal maxAmount;
private String currency;
@XmlElement(name = "min_amount")
public BigDecimal getMinAmount() {
return minAmount;
}
public void setMinAmount(BigDecimal minAmount) {
this.minAmount = minAmount;
}
@XmlElement(name = "max_amount")
public BigDecimal getMaxAmount() {
return maxAmount;
}
public void setMaxAmount(BigDecimal maxAmount) {
this.maxAmount = maxAmount;
}
@XmlElement(name = "currency")
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
}
當我收到一些外部服務的迴應時,我能夠unmarsh al表示字符串和結果有正確的Service
類別設置,但serviceDesc
總是null
。有什麼方法可以正確解開這個結構嗎?
在另一個問題(針對這個問題被標記爲一式兩份)的情況是,當你有相同的標籤名稱但不同的號碼在標籤我的情況下內容的屬性是不同的,也是在這個問題班到內容應該是unmarshaled是我的小孩和父母的一個是String
另一個是一些自定義對象。認爲這就是爲什麼我無法正確實施XmlAdapter
。
[JAXB @XmlElements的可能的複製,不同類型但同名?](http://stackoverflow.com/questions/5007516/jaxb-xmlelements-different-types-but-same-name) – sunil