Ich versuche, diese Art von XML entordnen:JAXB unmarshall XML mit demselben Tag-Namen, aber unterschiedlicher Struktur
<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>
Ich habe diese Art von Klassenstruktur erstellt:
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;
}
}
und Service
Aussehen wie folgt:
@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;
}
}
Wenn ich Antwort von einem externen Dienst erhalte, kann ich unmarsh al diese Zeichenfolge und Ergebnis hat Service
Klasse korrekt, aber serviceDesc
ist immer null
. Gibt es einen Weg, wie ich diese Struktur richtig entpacken kann?
In einer anderen Frage (für die diese Frage als Duplikat markiert ist) Fall ist, wenn Sie denselben Tag-Namen, aber unterschiedliche Anzahl von Attributen in meinem Fall Inhalt des Tags haben ist anders, auch in dieser Frage Klassen, zu denen Inhalt sollte abmarschiert werden Kind und Eltern in meinem Fall ist ein String
ein anderes benutzerdefiniertes Objekt. Denke, deshalb konnte ich XmlAdapter
nicht richtig implementieren.
Mögliche Duplikat [JAXB @XmlElements, verschiedene Typen aber gleichen Namen?] (http://stackoverflow.com/questions/5007516/jaxb-xmlelements-different-types-but-same-name) – sunil