为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

犯罪嫌疑人X 2021-06-09 12:08:45
我需要将 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 组进行转换我必须在哪里修复代码?
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

<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>存在,如能有一个以上<G_1>的内部<DATA_DS>?如果是这样,请将其列出:


@XmlElement(name = "G_1", required = true)

private List<PaymentGroup> groups;


查看完整回答
反对 回复 2021-06-30
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信