gpt4 book ai didi

java - 使用 jaxb 将对象转换为 XML 的异常

转载 作者:行者123 更新时间:2023-11-30 07:16:56 26 4
gpt4 key购买 nike

我正在尝试使用 JAXB 从对象构建 XML。

但是我遗漏了一些东西,因为我得到了一个异常(exception):

javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.internal.SAXException2: class Employee nor any of its super class is known to this context. javax.xml.bind.JAXBException: class Employee nor any of its super class is known to this context.]

@XmlRootElement(name = "employee")
public class Employee {
private String name;
private String employeeId;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
public String getEmployeeId() {
return employeeId;
}

public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}

}

@XmlRootElement(name = "Data")
public class Data {
public Data() {
}

private List employees;

@XmlElementWrapper(name = "employeeList")
@XmlElement(name = "employee")
public List getEmployees() {
return employees;
}

public void setEmployees(List employees) {
this.employees = employees;
}

}


public static void main(String[] args) {
ArrayList list = new ArrayList();

Employee e1 = new Employee();
e1.setName("Name");
e1.setEmployeeId("1");
list.add(e1);
Data data = new Data();
data.setEmployees(list);

JAXBContext context;

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

try {
context = JAXBContext.newInstance(Data.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(data, outStream);
} catch (JAXBException e) {

e.printStackTrace();
}

}

最佳答案

您需要执行以下操作之一,以便您的 JAXB (JSR-222) 实现知道 Data 类上的 employees 属性包含 的实例>员工

@XmlElementWrapper(name = "employeeList")
@XmlElement(name = "employee", type=Employee.class)
public List getEmployees() {
return employees;
}

@XmlElementWrapper(name = "employeeList")
@XmlElement(name = "employee")
public List<Employee> getEmployees() {
return employees;
}

关于java - 使用 jaxb 将对象转换为 XML 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16545868/

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