gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:00:11 24 4
gpt4 key购买 nike

我需要将 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> ,因此您的对象需要反射(reflect)这一点,即代表 <DATA_DS> 的类必须有一个字段,输入为代表 <G_1> 的类,它必须有两个字段。

Where I have to fix the code?

您需要为 <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;

关于java - 使用 JAXB 从 XML 文件中具有多个组的 XML 字符串创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51695576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com