如果没有任何注释,您可以使用自 Java SE 6 起包含在 JDK/JRE 中的JAXB (JSR-222)执行以下操作:
没有注释
您的模型似乎与映射到您发布的 XML 所需的所有默认命名规则相匹配。这意味着您可以使用您的模型,而无需以注释的形式添加任何元数据。需要注意的一点是,如果您不指定元数据以将根元素与类关联,那么您需要在解组时指定一个Class
参数,并将根对象包装在JAXBElement
编组时的实例中。
演示
在下面的演示代码中,我们将 XML 转换为对象,然后将对象转换回 XML。
JAXBContext jc = JAXBContext.newInstance(Employee.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
JAXBElement<Employee> je = unmarshaller.unmarshal(xml, Employee.class);
Employee employee = je.getValue();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(je, System.out);
了解更多信息
JAXBElement
消除需要@XmlRootElement
@XmlRootElement
当一个类使用(或)与根元素相关联时,@XmlElementDecl
您不需要在解组时指定Class
参数或在编组时将结果包装在 a 中JAXBElement
。
员工
@XmlRootElement
class Employee {
演示
JAXBContext jc = JAXBContext.newInstance(Employee.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Employee employee = (Employee) unmarshaller.unmarshal(xml);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(employee, System.out);
了解更多信息