当前位置: 首页 > news >正文

随心笔记,第六更

目录

一、 三步构建 XML转成java bean

1.XML转XSD

2.XSD转JavaBean

 3.jaxb 工具类

4.测试

📢📢📢📣📣📣
哈喽!大家好,我是「Leen」。刚工作几年,想和大家一同进步🤝🤝
一位上进心十足的Java博主!😜😜😜
喜欢尝试一些新鲜的东西,平时比较喜欢研究一些新鲜技术和一些自己没有掌握的技术领域。能用程序解决的坚决不手动解决😜😜😜

目前已涉足Java、Python、数据库(MySQL、pgsql、MongoDB、Oracle...)、Linux、HTML、VUE、PHP、C(了解不多,主要是嵌入式编程方向做了一些)...(还在不断地学习,扩展自己的见识和技术领域中),希望可以和各位大佬们一起进步,共同学习🤝🤝

✨ 如果有对【Java】,或者喜欢看一些【实操笔记】感兴趣的【小可爱】,欢迎关注我

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

今天给大家分享的是使用idea 将xml转为JavaBean并且取其中的数据和其他的数据进行交互,接下来直接上干货

一、 三步构建 XML转成java bean

1.XML转XSD

如果你是XSD的话,直接从 2 开始.

(1). 用idea打开xml文件,右击鼠标,选择 generate XSD from XML 如图

(2). 接下来是,选择自己想要的相关类型.如果想要生成的JavaBean属性和XML一致,记得选择Design type 为local elements type. 然后点击 OK 就可在当前文件夹生成了对应的XSD约束.

 

2.XSD转JavaBean

(1). 选中XSD,打开 并右键如下图,选中 generate javacode from XSD by JAXB

(新版idea用不了,可以用自己的idea试一下,我用2020前的试了一下是有的,2022的没有这个设置项)

 

如果idea没有这个功能的话,可以使用下面的命令进行转换

xjc -d "E:\\IdeaProjects\\test\\src\\main\\java\\com\\leen\\test\\test2024\\test605\\" -p com.leen.test.test2024.test605 "E:\\IdeaProjects\\test\\src\\main\\java\\com\\leen\\test\\test2024\\test605\\test.xsd"
#xjc -d 项目java文件夹 -p 包名 xsd文件名
#在xsd目录下执行,或者xsd文件名加上绝对路径

 3.jaxb 工具类

package com.leen.test.test2024.test605.utils;import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;
/*** Author:Leen* Date: 2024/6/5 0005 15:17*/public class JaxbUtil {/*** JavaBean转换成xml* 默认编码UTF-8* @param obj* @return*/public static String convertToXml(Object obj) {return convertToXml(obj, "UTF-8");}/*** JavaBean转换成xml* @param obj* @param encoding* @return*/public static String convertToXml(Object obj, String encoding) {String result = null;try {JAXBContext context = JAXBContext.newInstance(obj.getClass());Marshaller marshaller = context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);StringWriter writer = new StringWriter();marshaller.marshal(obj, writer);result = writer.toString();} catch (Exception e) {e.printStackTrace();}return result;}/*** xml转换成JavaBean* @param xml* @param c* @return*/@SuppressWarnings("unchecked")public static <T> T converyToJavaBean(String xml, Class<T> c) {T t = null;try {JAXBContext context = JAXBContext.newInstance(c);Unmarshaller unmarshaller = context.createUnmarshaller();t = (T) unmarshaller.unmarshal(new StringReader(xml));} catch (Exception e) {e.printStackTrace();}return t;}
}

4.测试

package com.leen.test.test2024.test605;import com.leen.test.test2024.test605.utils.JaxbUtil;
import com.leen.test.test2024.test605.xmlFour.Bookstore;
import com.leen.test.test2024.test605.xmlOne.CAR;
import com.leen.test.test2024.test605.xmlOne.GATHERINFO;
import com.leen.test.test2024.test605.xmlTwo.COMMANDINFO;/*** Author:Leen* Date: 2024/6/5 0005 15:18*/
public class Test605 {public static void main(String[] args) {String xmlTest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +"<bookstore>\n" +"    <book category=\"children\">\n" +"        <title lang=\"en\">Harry Potter</title>\n" +"        <author>J.K. Rowling</author>\n" +"        <year>2005</year>\n" +"        <price>29.99</price>\n" +"    </book>\n" +"    <book category=\"web\">\n" +"        <title lang=\"en\">Learning XML</title>\n" +"        <author>Erik T. Ray</author>\n" +"        <year>2003</year>\n" +"        <price>39.95</price>\n" +"    </book>\n" +"    <book category=\"cooking\">\n" +"        <title lang=\"en\">Everyday Italian</title>\n" +"        <author>Giada De Laurentiis</author>\n" +"        <year>2005</year>\n" +"        <price>30.00</price>\n" +"    </book>\n" +"    <book category=\"children\">\n" +"        <title lang=\"en\">Charlotte's Web</title>\n" +"        <author>E. B. White</author>\n" +"        <year>1952</year>\n" +"        <price>25.00</price>\n" +"    </book>\n" +"</bookstore>\n";Bookstore bookstore = JaxbUtil.converyToJavaBean(xmlTest, Bookstore.class);System.out.println(bookstore.getBook().get(0).getAuthor());String resTest = JaxbUtil.convertToXml(bookstore);System.out.println(resTest);}
}

输出结果 :

J.K. Rowling
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore><book category="children"><title lang="en">Harry Potter</title><author>J.K. Rowling</author><year>2005</year><price>29.99</price></book><book category="web"><title lang="en">Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book><book category="cooking"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="children"><title lang="en">Charlotte's Web</title><author>E. B. White</author><year>1952</year><price>25.00</price></book>
</bookstore>

这样就把xml里面的数据给取出来了,兄弟们就可以进行后续的操作了

欢迎大家在评论区讨论,今天的干货分享就到此结束了,如果觉得对您有帮助,麻烦给个三连!

以上内容为本人的经验总结和平时操作的笔记。若有错误和重复请联系作者删除!!感谢支持!!

 

http://www.lryc.cn/news/376454.html

相关文章:

  • zustand 状态管理库的使用 结合TS
  • Maven 的生命周期详解
  • 【稳定检索/投稿优惠】2024年生物技术与食品科学国际会议(ICBFS 2024)
  • iOS Category
  • 5.Sentinel入门与使用
  • 上位机图像处理和嵌入式模块部署(h750 mcu和图像处理)
  • 信创服务器操作系统的适配迁移分析
  • 在Ubuntu 20.04上安装和配置MySQL 8:详细指南和远程访问设置
  • Vue43-单文件组件
  • 如何快速使用向量检索服务DashVector?
  • Linux 用户和用户组 创建用户 创建组
  • Character Animator 2024 mac/win版:赋予角色生命,动画更传神
  • 短剧app广告变现模式开发
  • 如何选择适合的编程语言入门?
  • Spring Boot入门教程
  • 芝麻文件重命名 一键批量重命名 支持批量修改图片 文档 文件夹名称
  • docker守护进程配置代理
  • 使用Minikube部署Kubernetes环境
  • 蚂蚁集团:2023年科研投入211.9亿元
  • pikachu靶场之XSS漏洞测试
  • python快速入门之Flask框架
  • 【云原生| K8S系列】Kubernetes Daemonset,全面指南
  • 【Python机器学习实战】 | 基于决策树的药物研究分类预测
  • B端系统的UI框架选择,不要输在了起跑线,如何破?
  • RabbitMQ延迟消息(通过死信交换机实现)
  • Java - 分支结构 - if…else/switch
  • web安全渗透测试十大常规项(一):web渗透测试之XML和XXE外部实体注入
  • 任务3.8.2 利用RDD计算总分与平均分
  • 探索磁力搜索引擎:互联网资源获取的新视角
  • 立创开源学习篇(一)