- 项目创建
项目以JDK17为例,将项目的pom.xml转为JAVA对象。
- JDK17
JDK9+已经移除了JAXB库,而在JDK8中是默认包含的,在Java9或更高版本中,需要手动添加JAXB的依赖。 <!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.0</version> </dependency>
- pom.xml
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>4.0.0</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.0</version> </dependency>
- 插件安装
Ctrl+Alt+S-->插件-->Web Services
- 生成XSD
选中pom.xml-->工具-->XML操作-->从XML文件生成XSD架构
- 生成JAVA
选中pom.xsd-->工具-->XML操作-->使用JAXB从XML架构生成Java代码
软件包前缀为生成Java类的包路径,SDK选择JDK17,与项目保持一致
- 转化测试
@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<ProjectType> element = (JAXBElement<ProjectType>) unmarshaller.unmarshal(stream); ProjectType project = element.getValue(); System.out.println("------------------"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
- 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<ProjectType> element = (JAXBElement<ProjectType>) unmarshaller.unmarshal(stream); ProjectType project = element.getValue(); System.out.println("------------------"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
XML文件转JAVA对象(JDK17)
最新推荐文章于 2024-05-07 18:19:43 发布