使用 JAXB 从 XML 文件中的多个组的 XML 字符串创建对象

我需要将 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 组进行转换


我必须在哪里修复代码?


犯罪嫌疑人X
浏览 146回答 1
1回答

跃然一笑

<DATA_DS>包含一个元素,<G_1>,它本身包含两个元素,<TERM_ID>和<NAME>,所以你的对象需要反映这一点,即表示的类<DATA_DS>必须有一个字段,类型为一个表示的类<G_1>,它必须有两个字段。我必须在哪里修复代码?您需要为以下对象创建一个类<G_1>:@XmlRootElement(name = "DATA_DS")@XmlAccessorType(XmlAccessType.FIELD)public class PaymentTerm {&nbsp; &nbsp; @XmlElement(name = "G_1", required = true)&nbsp; &nbsp; private PaymentGroup group;}@XmlAccessorType(XmlAccessType.FIELD)public class PaymentGroup {&nbsp; &nbsp; @XmlElement(name = "TERM_ID", required = true)&nbsp; &nbsp; private double termId;&nbsp; &nbsp; @XmlElement(name = "NAME", required = true)&nbsp; &nbsp; private String termName;}你也应该考虑为什么<G_1>存在,如能有一个以上<G_1>的内部<DATA_DS>?如果是这样,请将其列出:@XmlElement(name = "G_1", required = true)private List<PaymentGroup> groups;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java