📜  用于 XML 绑定 (JAXB) 的Java体系结构第一组(1)

📅  最后修改于: 2023-12-03 14:56:18.918000             🧑  作者: Mango

用于 XML 绑定 (JAXB) 的Java体系结构第一组

Java Architecture for XML Binding (JAXB) 是 Java Platform, Standard Edition (Java SE) 的一部分,它提供了一组工具和API来将 Java 对象和 XML 文档相互转换。

JAXB 的体系结构

JAXB 的体系结构分为 3 个部分:

  1. JAXB API
    • 绑定方式
    • 序列化
    • 反序列化
    • 验证等
  2. JAXB Runtime API(JAXB 实现)
    • JAXB 实现是针对 JAXB API 的具体实现。
    • 序列化/反序列化/验证/类装载等机制。
  3. JAXB 绑定编译器
    • 把 XML Schema 转换为 Java 对象
JAXB API

JAXB API 提供了以下功能:

  • 绑定方式(Marshalling/Unmarshalling):将 Java 对象序列化成 XML,并将 XML 反序列化成 Java 对象。

    • 使用示例:
      // 从 Java 对象生成 XML
      JAXBContext context = JAXBContext.newInstance(Employee.class);
      Marshaller marshaller = context.createMarshaller();
      marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
      marshaller.marshal(employee, System.out);
      
      // 从 XML 生成 Java 对象
      JAXBContext context = JAXBContext.newInstance(Employee.class);
      Unmarshaller unmarshaller = context.createUnmarshaller();
      Employee employee = (Employee) unmarshaller.unmarshal(file);
      
  • 验证(Validation):根据 XML Schema 验证 Java 对象或将 Java 对象验证为 XML Schema。

    • 使用示例:
      JAXBContext context = JAXBContext.newInstance(Employee.class);
      Validator validator = context.createValidator();
      validator.validate(employee);
      
  • 注释(Annotation) :为 Java 类添加注释以定制 JAXB 绑定

    • 示例:
      @XmlRootElement(name = "employee")
      public class Employee {
          private String name;
      
          @XmlAttribute
          public void setName(String name) {
              this.name = name;
          }
          public String getName() {
              return name;
          }
      }
      
JAXB Runtime API(JAXB 实现)

JAXB 实现提供以下功能:

  • 序列化(Marshalling):将 Java 对象序列化成 XML
  • 反序列化(Unmarshalling):将 XML 反序列化成 Java 对象
  • 验证(Validation):根据 XML Schema 验证 Java 对象或将 Java 对象验证为 XML Schema
  • 类装载(Class Loading) :在运行时与使用 JAXB API 进行交互时加载类
  • XML 对象描述(XML Object Description) :提供处理 XML 内容的对象模型
JAXB 绑定编译器

JAXB 绑定编译器将 XML Schema 转换为 Java 对象。它提供了以下功能:

  • xjc(XML Schema to Java Compiler):将 XML Schema 文件转换为 Java 类。
  • schemagen:从源代码生成 XML Schema 文件。
结论

JAXB 提供了在 Java 和 XML 之间进行快速、方便、无缝转换的方案。JAXB API、JAXB 实现以及绑定编译器组成了 JAXB 的体系结构。JAXB 可以为开发人员提供快速、轻松和便捷的开发体验,同时保证了代码和数据的同步性和完整性。