5

我是 jaxb 的新手。我的问题如下:使用 jaxb,是否可以从 xml 文件自动映射到 java 对象?从 xml 文件开始,是否有东西生成带有注释 jaxb relaitve 的 Java 类?

4

2 回答 2

6

这确实是可能的。但是,您需要 XSD 而不是 XML 文件。有一些工具(例如Trang)可以从一个或多个示例 XML 文件推断 XSD。

考虑到如果 XML 示例不完整,或者如果模式无法在单个 XML 文件中完全表示(专有元素等),使用工具生成此 XSD 可能会得到不准确的结果。

拥有 XSD 后,请使用xjc它来生成 marshaller/unmarshaller 类。

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);
于 2013-05-06T10:42:10.750 回答
1

是的,JAXB自动执行marshallingunmarshalling但它需要一个模式文件。JaxB 用于将 XML 与 Java 对象绑定。使用XSD模式文件,它进行编组和解组。很少有像 XJC 这样的简单 ant 任务可以使用。

于 2013-05-06T10:41:49.920 回答