[英]Use JAXB to create Object from XML String with Multiple Groups in XML file
我需要將XML字符串轉換為java對象。
這是XML文件
<?xml version="1.0" encoding="UTF-8"?>
<DATA_DS>
<G_1>
<TERM_ID>4</TERM_ID><NAME>30 Net</NAME>
</G_1>
</DATA_DS>
我創建了這樣的類;
@XmlRootElement(name = "DATA_DS")
@XmlAccessorType(XmlAccessType.FIELD)
public class PaymentTerm {
@XmlElement(name = "TERM_ID")
private double termId;
@XmlElement(name = "NAME")
private String termName;
public double getTermId() {
return termId;
}
public void setTermId(double termId) {
this.termId = termId;
}
public String getTermName() {
return termName;
}
public void setTermName(String termName) {
this.termName = termName;
}
}
在主要班級
jaxbContext = JAXBContext.newInstance(PaymentTerm.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xmlString);
PaymentTerm paymentTerm = (PaymentTerm) unmarshaller.unmarshal(reader);
由於XML文件中存在嵌套的組,因此無法正確解組XML字符串。
如果我從XML文件中刪除G_1組,那么它將完美轉換。 我需要與G_1組進行轉換
我必須在哪里修復代碼?
<DATA_DS>
包含一個元素<G_1>
,它本身包含兩個元素<TERM_ID>
和<NAME>
,因此您的對象需要反映這一點,即表示<DATA_DS>
的類必須具有一個字段,類型為一類表示<G_1>
,必須具有兩個字段。
我必須在哪里修復代碼?
您需要為<G_1>
創建一個類:
@XmlRootElement(name = "DATA_DS")
@XmlAccessorType(XmlAccessType.FIELD)
public class PaymentTerm {
@XmlElement(name = "G_1", required = true)
private PaymentGroup group;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class PaymentGroup {
@XmlElement(name = "TERM_ID", required = true)
private double termId;
@XmlElement(name = "NAME", required = true)
private String termName;
}
您還應該考慮為什么存在<G_1>
,例如, <DATA_DS>
可以有多個<G_1>
<DATA_DS>
嗎? 如果是這樣,請列出:
@XmlElement(name = "G_1", required = true)
private List<PaymentGroup> groups;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.