将XML实体映射到Java对象

我很确定,这是围绕XML到Java Object转换的许多重复问题之一。 但我开始这个线程,因为我找不到更简单或寻找更简单的解决方案。

我有一个xsd [我正在设计它]和xml。 我想根据映射将xml数据自动映射到Java bean

  1 A A  1 Preactivation Preactivation  1   

现在我的Java课程将是

 public class SummaryCart{ private List summaryElementList; } public class SummaryElement { private int order; private String id; private String displayName; private String property; private List subElements; private int maxlines; private String type; } 

是否有任何简单的工具/框架可以将数据从XML自动映射到Java bean [必须支持属性/元素映射]。 教程会很好。

顺便说一下,我正在使用Spring框架,如果采用spring-oxm优势,那就受欢迎了。

下面是使用JAXB(JSR-222)将对象映射到XML的方法。 JDK / JRE中包含一个实现,从Java SE 6开始.Jun支持JAXB(参见第8.5节: http : //static.springsource.org/spring-ws/site/reference/html/oxm.html )

SummaryCart

 import java.util.List; import javax.xml.bind.annotation.*; @XmlRootElement(name="SummaryCart", namespace="SummaryCart") @XmlAccessorType(XmlAccessType.FIELD) public class SummaryCart{ @XmlElement(name="SummaryElement") private List summaryElementList; } 

SummaryElement

 import java.util.List; import javax.xml.bind.annotation.*; @XmlAccessorType(XmlAccessType.FIELD) public class SummaryElement { private int order; private String id; private String displayName; private String property; private List subElements; private int maxlines; @XmlAttribute private String type; } 

演示

 import java.io.File; import javax.xml.bind.*; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(SummaryCart.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); File xml = new File("src/forum15881876/input.xml"); SummaryCart sc = (SummaryCart) unmarshaller.unmarshal(xml); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "SummaryCart.xsd"); marshaller.marshal(sc, System.out); } } 

input.xml中/输出

    1 A A  1 Preactivation Preactivation 0  1   

基本上你想要解组你的XML。 这是一个详细的教程,描述了如何使用JAXB xjc命令从XML Schema生成Java类 。 maven xjc插件也可供您使用。