随心笔记,第六更

目录

一、 三步构建 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.mzph.cn/news/852391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP RainMaker®为企业提供AIoT云解决方案,启明云端乐鑫代理商

在AIoT的浪潮中&#xff0c;企业面临着前所未有的机遇与挑战。如何快速响应市场变化&#xff0c;开发出具有竞争力的智能产品&#xff1f;如何确保数据安全&#xff0c;同时实现高效的设备管理&#xff1f;这些问题&#xff0c;ESP RainMaker给出了答案。 ESP RainMaker是一个…

STM32程序启动过程

&#xff08;1&#xff09;首先对栈和堆的大小进行定义&#xff0c;并在代码区的起始处建立中断向量表&#xff0c;其第一个表项是栈顶地址&#xff08;32位&#xff09;&#xff0c;第二个表项是复位中断服务入口地址&#xff1b; &#xff08;2&#xff09;然后执行复位中断&…

了解TF-IDF:一种文本分析的强大工具

了解TF-IDF&#xff1a;一种文本分析的强大工具 在现代信息时代&#xff0c;海量的文本数据充斥着我们的生活。如何有效地从这些文本数据中提取有价值的信息成为了一个关键问题。TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;作为一种经典的文本分…

如何将NextJs中的File docx保存到Prisma ORM

背景/引言 在现代 Web 开发中&#xff0c;Next.js 是一个备受欢迎的 React 框架&#xff0c;它具有许多优点&#xff0c;如&#xff1a; 服务器端渲染 (SSR)&#xff1a;Next.js 支持服务器端渲染&#xff0c;可以提高页面加载速度&#xff0c;改善 SEO&#xff0c;并提供更好…

即插即用!CVD:第一个生成具有相机控制的多视图一致视频方案!(斯坦福港中文)

论文链接&#xff1a;https://arxiv.org/abs/2405.17414 项目链接&#xff1a;https://collaborativevideodiffusion.github.io/ 最近对视频生成的研究取得了巨大进展&#xff0c;使得可以从文本提示或图像生成高质量的视频。在视频生成过程中添加控制是未来的重要目标&#x…

笔记99:OSQP 求解器示例代码

注1&#xff1a;以下代码是 OSQP 的官方文档提供的示例&#xff0c;我加上了详细的注释&#xff1b; 注2&#xff1a;OSQP 库仅支持C语言&#xff0c;不支持C&#xff0c;所以下面的示例代码使用的是C语言&#xff1b;但是 OSQP 求解库提供了针对C的接口 OSQP-EIGEN&#xff1…

leetcode240 搜索二维矩阵II

题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18…

ASP淘特二手房房地产系统源码

源码介绍 ASP淘特二手房房地产系统源码主要提供了房屋信息出售、出租、求购、求租、合租等信息的发布平台。 本系统已提供成熟的赢利模式&#xff0c;通过向中介会员提供发布信息平台收取会员费为网站的主要收入来源&#xff0c;中介会员申请开通后&#xff0c;可以添加经济人…

Ubuntu 的 apt 相关问题

错误:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease Couldnt create temporary file /tmp/apt.conf.KSeTlI for passing config to apt-key 原因 无法创建配置文件 /tmp/apt.conf.KSeTlI 并传递给 apt-key apt-key 等实际上并不是直接使…

phpcms仿蚁乐购淘宝客网站模板

phpcms仿蚁乐购网站模板&#xff0c;淘宝客行业模板免费下载&#xff0c;该模板网站很容易吸引访客点击&#xff0c;提升ip流量和pv是非常有利的。本套模板采用现在非常流行的全屏自适应布局设计&#xff0c;且栏目列表以简洁&#xff0c;非常时尚大气。页面根据分辨率大小而自…

MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)

目录 前言1. 授予权限2. 撤销权限3. 查询权限4. Demo 前言 公司内部的数据库权限一般针对不同人员有不同的权限分配&#xff0c;而不都统一给一个root权限 1. 授予权限 授予用户权限的基本命令是GRANT 可以授予的权限种类很多&#xff0c;涵盖从数据库和表级别到列和存储过…

基于改进字典学习的旋转机械故障诊断方法(MATLAB)

在过去的二十年里&#xff0c;稀疏表示在各个领域引起了广泛的关注。它的核心思想是将信号描述为尽量少的字典原子&#xff0c;在计算机视觉、生物学、特征提取和机械故障诊断方面显示出强大而可靠的能力。SR通常分为两个步骤&#xff1a;构建字典和学习稀疏系数。对于稀疏系数…

k8s+RabbitMQ单机部署

1 k8s 配置文件yaml: apiVersion: apps/v1 kind: Deployment metadata:name: rabbitmq-deploynamespace: rz-dt spec:replicas: 1selector:matchLabels:app: rabbitmqtemplate:metadata:labels:app: rabbitmqspec:containers:- name: rabbitmqimage: "rz-dt-image-server…

MySQL从入门到高级 --- 15.优化 16.pymysql

文章目录 第十五章 && 第十六章&#xff1a;15.优化15.1 查询SQL执行效率15.2 定位低效率执行SQL15.3 explain分析执行计划 - 基本使用15.4 explain分析执行计划 - id15.5 explain分析执行计划 - select_type15.6 explain分析执行计划 - type15.7 explain分析执行计划 …

Java:爬虫htmlunit抓取a标签

如果对htmlunit还不了解的话可以参考Java&#xff1a;爬虫htmlunit-CSDN博客 了解了htmlunit之后&#xff0c;我们再来学习如何在页面中抓取我们想要的数据&#xff0c;我们在学习初期可以找一些结构比较清晰的网站来做测试爬取&#xff0c;首先我们随意找个网站如下&#xff…

【5.x】ELK日志分析

ELK日志分析 一、ELK概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求。 一个完整的集中式日志系统&#xff0c;需要包含以下几个主…

linux执行ifconfig命令ens33没有显示ip地址解决方法

1.右键启动VMware DHCP和NAT这两个服务 2.执行reboot命令&#xff0c;重启linux。然后再执行ifconfig命令,可以看到inet了&#xff0c;就是ip。xshell也可以连接到主机了。

复旦微FMQL20SM全国产ARM+FPGA核心板,替代xilinx ZYNQ7020系列

FMQL20SM核心板一款全国产工业核心板。基于复旦微FMQL20S400M四核ARM Cortex-A7&#xff08;PS端&#xff09; FPGA可编程逻辑资源&#xff08;PL端&#xff09;异构多核SoC处理器设计的全国产工业核心板&#xff0c;PS端主频高达1GHz。 核心板简介 FMQL20SM核心板是一款全国…

RK3568平台(显示篇)HDMIOUT调试

一.HDMIOUT代码路径 DRM 全称是 Direct Rendering Manager 是 DRI ( Direct Rendering Infrastructure ) 框架的一个 组件。LINUX 4.4/4.19 内核采用 DRM 框架&#xff0c; HDMI 驱动的路径为&#xff1a; kernel/drivers/gpu/drm/rockchip/dw_hdmi-Rockchip.c kernel/driv…

【Spine学习07】之跑步动作制作思路总结

前几节试着做了待机和走路动画 现在开始尝试做跑步动作 注意跑步动作和走路一样 暂时不需要使用IK约束但是会用到塞贝尔曲线&#xff08;模拟裙子飞起动效&#xff09; 第一步&#xff1a; 先将人物整体斜放置&#xff08;因为人跑步的时候&#xff0c;身体前倾&#xff09; …