使用 Java™ XML 绑定体系结构 (JAXB) 运行时来处理 XML 实例文档。
开始之前
使用 JAXB 通过模式编译器
xjc 命令根据 XML 模式生成 Java 类,或通过模式生成器
schemagen 命令根据 Java 类生成 XML 模式。
关于此任务
使用 JAXB API 和工具在 XML 模式和 Java 类之间建立映射。在数据绑定存在后,使用 JAXB 绑定运行时 API 将 XML 实例文档与 Java 对象进行转换。不必理解数据结构即可访问存储在 XML 文档中的数据。JAXB 注释类和工件包含 JAXB 运行时 API 用于处理 XML 实例文档所需的所有信息。JAXB 运行时 API 支持将 JAXB 对象编组为 XML 及取消对 XML 文档的编组以使其恢复为 JAXB 类实例。
过程
- 将 JAXB 对象编组为 XML 实例文档。
使用 JAXB 运行时 API 将 JAXB 对象实例编组或转换为 XML 实例文档。
- 对 JAXB 类进行实例化。
- 调用 JAXB 编组器。
本示例演示如何在应用程序中对生成的 JAXB 对象进行实例化,以及如何使用 JAXBContext 类和 JAXB 运行时编组器 API 将 JAXB 对象编组为 XML 实例。
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Create marshaller
Marshaller m = jc.createMarshaller();
//Marshal object into file.
m.marshal(myJAXBObject, myOutputStream);
JAXB 参考实现引入了其他特定于供应商的编组器属性,例如,名称空间前缀映射、缩进以及字符转义控制,这些属性不是由 JAXB 规范定义。使用这些属性来指定编组过程的其他控制。这些属性仅与 JAXB 参考实现配合使用,无法与其他 JAXB 提供程序配合使用。在 Java XML 绑定体系结构 JAXB RI Vendor Extension Runtime Properties 规范中可找到有关特定于供应商的属性的更多信息。
- 将 XML 文件取消编组为 JAXB 对象。
使用 JAXB 运行时 API 将 XML 实例文档取消编组或转换为 JAXB 对象实例。
- 获取现有 XML 实例文档。
- 调用 JAXB 取消编组器。
本示例演示了读取 XML 文档及将 XML 文档取消编组或转换为 JAXB 对象实例的程序。使用 JAXBContext 类和 JAXB 运行时取消编组器 API 对 XML 文档进行取消编组。
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Create unmarshaller
Unmarshaller um = jc.createUnmarshaller();
//Unmarshal XML contents of the file myDoc.xml into your Java
object instance.
MyJAXBObject myJAXBObject = (MyJAXBObject)
um.unmarshal(new java.io.FileInputStream( "myDoc.xml" ));
结果
现在可以使用 JAXB 绑定框架对 JAXB Java 类进行编组和对 XML 数据取消编组。请参阅 JAXB 引用实现文档,以获取有关对运行时 API 进行编组和取消编组的更多信息
避免故障: 如果启用了 Java 2 安全性,请在 AccessController.doPrivileged 方法中合并 JAXBContext.newInstance()、Unmarshaller.unmarshal() 和 Marshaller.marshal() 方法调用以避免出现安全性异常。
gotcha
.