XML文件转JAVA对象(JDK17)

  1. 项目创建
    项目以JDK17为例,将项目的pom.xml转为JAVA对象。
    XML文件转JAVA对象(JDK17)_第1张图片
  2. JDK17
    JDK9+已经移除了JAXB库,而在JDK8中是默认包含的,在Java9或更高版本中,需要手动添加JAXB的依赖。
    
    
    	jakarta.xml.bind
    	jakarta.xml.bind-api
    	4.0.0
    
  3. pom.xml
    
    
    	com.sun.xml.bind
    	jaxb-impl
    	4.0.0
    
    
    
    	jakarta.xml.bind
    	jakarta.xml.bind-api
    	4.0.0
    
  4. 插件安装
    Ctrl+Alt+S-->插件-->Web Services
    XML文件转JAVA对象(JDK17)_第2张图片
  5. 生成XSD
    选中pom.xml-->工具-->XML操作-->从XML文件生成XSD架构
    XML文件转JAVA对象(JDK17)_第3张图片
    XML文件转JAVA对象(JDK17)_第4张图片
    XML文件转JAVA对象(JDK17)_第5张图片
  6. 生成JAVA
    选中pom.xsd-->工具-->XML操作-->使用JAXB从XML架构生成Java代码
    XML文件转JAVA对象(JDK17)_第6张图片
    软件包前缀为生成Java类的包路径,SDK选择JDK17,与项目保持一致
    XML文件转JAVA对象(JDK17)_第7张图片
    XML文件转JAVA对象(JDK17)_第8张图片
  7. 转化测试
    @SpringBootTest
    class XsdApplicationTests {
    
    	@Test
    	void contextLoads() {
    		try {
    			Unmarshaller unmarshaller = JAXBContext.newInstance(ObjectFactory.class).createUnmarshaller();
    			InputStream stream = new FileInputStream(new File("D:\\xsd\\pom.xml"));
    			JAXBElement element = (JAXBElement) unmarshaller.unmarshal(stream);
    			ProjectType project = element.getValue();
    			System.out.println("------------------");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    }

    XML文件转JAVA对象(JDK17)_第9张图片XML文件转JAVA对象(JDK17)_第10张图片

  8. Apipost测试
    @RestController
    @RequestMapping("/xsd")
    public class XsdController {
    
        @GetMapping("/importXsd")
        public void importXsd(@RequestParam("file") MultipartFile file) {
            try {
                Unmarshaller unmarshaller = JAXBContext.newInstance(ObjectFactory.class).createUnmarshaller();
    //            InputStream stream = new FileInputStream(new File("D:\\xsd\\pom.xml"));
                InputStream stream = file.getInputStream();
                JAXBElement element = (JAXBElement) unmarshaller.unmarshal(stream);
                ProjectType project = element.getValue();
                System.out.println("------------------");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

    XML文件转JAVA对象(JDK17)_第11张图片
    XML文件转JAVA对象(JDK17)_第12张图片

你可能感兴趣的:(xml,xsd,java,jdk17)