使用 jaxb 将对象转换为 XML 的异常
Posted
技术标签:
【中文标题】使用 jaxb 将对象转换为 XML 的异常【英文标题】:Exception converting object to XML using jaxb 【发布时间】:2013-05-08 21:25:35 【问题描述】:我正在尝试使用 JAXB 从对象构建 XML。
但我错过了一些东西,因为我得到了一个例外:
javax.xml.bind.MarshalException - 带有链接异常:[com.sun.istack.internal.SAXException2: Employee 类或其任何超类在此上下文中是已知的。 javax.xml.bind.JAXBException:员工类或其任何超类 类在此上下文中是已知的。]
@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();
【问题讨论】:
【参考方案1】:您需要执行以下操作之一,以便您的 JAXB (JSR-222) 实现知道您的 Data
类上的 employees
属性包含 Employee
的实例。
@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;
【讨论】:
以上是关于使用 jaxb 将对象转换为 XML 的异常的主要内容,如果未能解决你的问题,请参考以下文章