簡體   English   中英

使用JAXB從XML字符串中的XML文件中創建具有多個組的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM