Eclipse怎么自动生成XML Schema的Java类

Eclipse中生成XSD对应Java类最常用方式是JAXB的xjc工具:JDK 8内置,JDK 9+需手动添加Jakarta JAXB依赖;可通过Eclipse右键XSD→Generate→JAXB Classes向导生成,或用Maven的jaxb2-maven-plugin自动化生成并管理。

在 Eclipse 中自动生成 XML Schema(XSD)对应的 Java 类,最常用且官方支持的方式是使用 JAXB 工具(如 xjc),配合 Eclipse 的插件或外部工具集成。Eclipse 本身不直接“一键生成”,但可通过配置轻松完成。

确认 JDK 和 JAXB 支持

JAXB 在 JDK 8 中默认内置,但从 JDK 9 开始被移出标准库,JDK 11+ 完全移除。因此:

  • 若用 JDK 8:可直接调用 xjc(位于 $JAVA_HOME/bin/xjc
  • 若用 JDK 9+:需手动添加 jakarta.xml.bind-api 和 jaxb-runtime 依赖,并使用独立的 xjc(如来自 JAXB-RI 或 JAXB2 Basics)

使用 Eclipse 内置的 XJC 工具(推荐方式)

Eclipse IDE(特别是 Eclipse IDE for Enterprise Java and Web Developers)通常已集成 JAXB Tools 支持:

  • 右键点击你的 XSD 文件 → 选择 Generate → JAXB Classes…
  • 在向导中指定:
    • Target package:生成类的目标包名(如 com.example.schema
    • Target folder:生成源码的输出目录(建议选 src/main/java 或项目内的 generated-sources
    • 勾选 Overwrite existing files(如需覆盖)
  • 点击 Finish,Eclipse 会自动调用 xjc 并生成带注解的 Java 类(@XmlRootElement, @XmlElement 等)

通过 Maven + JAXB 插件自动化(更可靠、可复现)

在企业级项目中,推荐用 Maven 管理生成过程,避免 IDE 差异:

  • pom.xml 中添加 jaxb2-maven-plugin兼容 JDK 9+):

  
    
      org.codehaus.mojo
      jaxb2-maven-plugin
      3.1.0
      
        
          xjc
          goals>xjc
        

      

      
        src/main/resources/schema.xsd
        src/main/java
        false
      

    

  

  • 保存后右键项目 → Maven → Generate Sources and Update Folders,即可生成
  • 生成的类默认放在 target/generated-sources/jaxb,可配置为 src/main/java(注意避免手写代码被覆盖)

验证和使用生成的类

生成后,你会得到类似 ObjectFactory.javaPerson.java 等类。简单测试反序列化:

Person person = JAXBContext.newInstance(Person.class)
  .createUnmarshaller()
  .unmarshal(new File("person.xml"), Person.class)
  .getValue();
  • 确保 XML 根元素与 XSD 中定义一致
  • 如遇命名冲突或需要定制(如字段名、集合类型),可在 XSD 中加 jaxb:property 或使用 binding.xjb 绑定文件