将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插件也可供您使用。
- 将表单的数据提交到java集
- 无法调试java.lang.NoClassDefFoundError:com / google / inject / internal / util / $ Preconditions
- java.lang.UnsupportedOperationException用于从javafx tableview中删除行
- 从Java中的Amazon Access Key获取用户名
- 从java transient或@Transient注释隐藏JSON序列化属性的最佳方法?
- gwt maven项目风味:WebAppCreator或gwt-maven-plugin-Archetype – 使用什么
- 确保模块仅在Guice中加载一次
- 如何使用JSTL遍历String中的每个字符?
- 使用mvn idea:idea时无法加载intellij模块