【发布时间】:2013-04-30 02:10:48
【问题描述】:
我是 jaxb 的新手。我的问题如下:使用 jaxb,是否可以从 xml 文件自动映射到 java 对象? 从xml文件开始,有没有什么东西可以生成带有注释jaxb relaitve的Java类?
【问题讨论】:
标签: java xml xml-parsing jaxb
我是 jaxb 的新手。我的问题如下:使用 jaxb,是否可以从 xml 文件自动映射到 java 对象? 从xml文件开始,有没有什么东西可以生成带有注释jaxb relaitve的Java类?
【问题讨论】:
标签: java xml xml-parsing jaxb
确实有可能。但是,您需要 XSD 而不是 XML 文件。有一些工具(例如Trang)可以从一个或多个示例 XML 文件推断 XSD。
请注意,如果 XML 示例不完整,或者如果架构无法在单个 XML 文件中完全表示(专有元素等),则使用工具生成此 XSD 可能会得到不准确的结果。
拥有 XSD 后,使用 xjc 生成编组器/解组器类。
xjc myxsd.xsd
这将生成 JAXB 将用于编组/解组的带注释的类。请注意,您也可以自己编写这些类。一旦你有了它们,只需在你的代码中使用它们:
File file = new File("myFile.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(MyRootElement.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
MyRootElement element = (MyRootElement) jaxbUnmarshaller.unmarshal(file);
【讨论】:
是的,JAXB 自动执行 marshalling 和 unmarshalling,但它需要架构文件。
JaxB 用于将 XML 与 Java 对象绑定。使用XSD 模式文件,它进行编组和解组。很少有像 XJC 这样简单的 ant 任务可以使用。
【讨论】: