使用 JAXB 将内嵌的JAVA对象转换为 xml文件

使用 JAXB 将内嵌的JAVA对象转换为 xml文件

    • 1. 需求
    • 2. 实现
      • (1)FileDesc类
      • (2)MetaFileXml类
      • (3)生成对应的xml文件

1. 需求

获取一个目录下所有文件的元数据信息(文件名、大小、后缀等),并生成对应的xml文件;

思路
创建一个 FileDesc 类用来存储文件的元数据信息;
创建一个 MetaFileXml 类,将 List<FileDesc> metaFile 的List作为属性,用来存储多个文件的元数据信息;

2. 实现

(1)FileDesc类

用来保存文件的元数据信息;
注意:类上面要加 @XmlRootElement 注解!

import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement
public class FileDesc {private String file;private String parentPath;private String suffix;private String size;public FileDesc() {}public FileDesc(String file, String size) {this.file = file;this.size = size;}public FileDesc(String file, String parentPath, String suffix, String size) {this.file = file;this.parentPath = parentPath;this.suffix = suffix;this.size = size;}public String getFile() {return file;}public void setFile(String file) {this.file = file;}public String getParentPath() {return parentPath;}public void setParentPath(String parentPath) {this.parentPath = parentPath;}public String getSize() {return size;}public void setSize(String size) {this.size = size;}public String getSuffix() {return suffix;}public void setSuffix(String suffix) {this.suffix = suffix;}}

(2)MetaFileXml类

用来保存多个文件的元数据信息;
注意:类上面要加 @XmlRootElement 注解!

import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;@XmlRootElement
public class MetaFileXml {private List<FileDesc> metaFile;public List<FileDesc> getMetaFile() {return metaFile;}public void setMetaFile(List<FileDesc> metaFile) {this.metaFile = metaFile;}
}

(3)生成对应的xml文件

注意:建立 JAXBContext 时是以 MetaFileXml 类来创建;

    @Testpublic void testXml() throws Exception {// 1. 准备文件目录String filePath = "C:\\Users\\liziq\\Desktop\\zipTest02";File sourceFile = new File(filePath);// 2. 获取目录下所有文件List<File> files = (List<File>) FileUtils.listFiles(sourceFile, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);List<FileDesc> descList = new ArrayList<>();// 3. 将所有文件的元数据放入 List中for (File file : files) {long size = Files.size(Paths.get(file.getAbsolutePath()));String sizeString = String.valueOf(size);String suffix = FilenameUtils.getExtension(file.getName()).toLowerCase();descList.add(new FileDesc(file.getName(), file.getParent(), suffix, sizeString));}// 4. 将List<FileDesc> 添加到 fileDescXmlMetaFileXml fileDescXml = new MetaFileXml();fileDescXml.setMetaFile(descList);// 5. 生成xml格式信息try {// 创建JAXBContext对象JAXBContext jaxbContext = JAXBContext.newInstance(MetaFileXml.class);// 创建Marshaller对象Marshaller marshaller = jaxbContext.createMarshaller();// 设置Marshaller的属性,格式化输出marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);StringWriter writer = new StringWriter();writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");marshaller.marshal(fileDescXml, writer);// 6. 写入xml文件File fileDesc = new File("C:\\Users\\liziq\\Desktop\\meta.xml");FileWriter fw = new FileWriter(fileDesc);BufferedWriter bw = new BufferedWriter(fw);bw.write(writer.toString());bw.flush();bw.close();} catch (Exception e) {e.printStackTrace();}}

成功生成xml文件:

  • 在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/418493.html

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

相关文章

linux启动过程

当按下电源按钮启动Linux时&#xff0c;幕后发生了什么&#xff1f; 一个名为BIOS或UEFI的程序会启动运行;改程序的基本用途是让计算机 所有主要部分做好操作准备&#xff08;这些部分包括&#xff1a;键盘&#xff0c;屏幕硬盘等&#xff09; POST检查&#xff1b;测试可确保…

过滤器Filter(JavaEE有三大组件: servlet filter linstener)

目录 1、概念 2、过滤器作用 3、编写过滤器 4 过滤器链和优先级 4.1 过滤器链 2 过滤器优先级 5、过滤器应用:全局编码加身份认证拦截器 1、概念 过滤器&#xff08;Filter&#xff09;是处于客户端与服务器目标资源之间的一道过滤技术。 2、过滤器作用 执行顺序在Servl…

vue 批量导出pdf 压缩包 zip

vue 批量导出pdf 压缩包 zip 使用插件 html2canvas jspdf jszip &#xff08;百度ai搜出来的是zip-js 这个没法安装&#xff09; file-saver 思路&#xff1a; 1.使用 html2canvasjspdf 将页面转图片转pdf&#xff08;这个怎么转的可以网上搜下很多&#xff09; 2.利用jszipfil…

力扣最热一百题——最大子数组和

目录 题目链接&#xff1a;53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;动态规划 举例分析 时间复杂度 Java写法&#xff1a; C写法&#xff1a; 优化 总结 题目链接&#xff1a;53. 最大子数组和 …

大模型推理框架 RTP-LLM 架构解析

RTP-LLM 是阿里巴巴智能引擎团队推出的大模型推理框架&#xff0c;支持了包括淘宝、天猫、闲鱼、菜鸟、高德、饿了么、AE、Lazada 等多个业务的大模型推理场景。RTP-LLM 与当前广泛使用的多种主流模型兼容&#xff0c;使用高性能的 CUDA kernel, 包括 PagedAttention、FlashAtt…

Spring Boot-自定义banner

在 Spring Boot 应用中&#xff0c;你可以自定义启动时显示的 banner。这些 banner 可以包括图形、文字或者其他形式的标识。如图所示&#xff1a; 1. 使用 banner.txt 文件 默认情况下&#xff0c;Spring Boot 使用项目的 banner.txt 文件中的内容作为启动时的 banner。你可以…

会员营销如何利用JSON发送短信

在当今这个数字化时代&#xff0c;企业间的竞争日益激烈&#xff0c;如何高效地触达并维护用户群体&#xff0c;提升用户粘性和忠诚度&#xff0c;成为了每个企业都必须面对的重要课题。在众多营销手段中&#xff0c;会员营销因其精准性和个性化而备受青睐。而在会员营销的策略…

Vue学习笔记 二

4、Vue基础扩展 4.1 插槽 组件的最大特性就是复用性&#xff0c;而用好插槽能大大提高组件的可复用能力在Vue中插槽是很重要的存在&#xff0c;通过插槽&#xff0c;我们可以把父组件中指定的DOM作用到子组件的任意位置&#xff0c;后面我们坐项目用到的组件库比如element-ui…

ctfshow-nodejs

什么是nodejs Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境。可以说nodejs是一个运行环境&#xff0c;或者说是一个 JS 语言解释器 Nodejs 是基于 Chrome 的 V8 引擎开发的一个 C 程序&#xff0c;目的是提供一个 JS 的运行环境。最早 Nodejs 主要是安装在服务器…

C语言 | Leetcode C语言题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; bool isSubsequence(char* s, char* t) {int mstrlen(s); int nstrlen(t);int k0; int j0;if(mn&&m0) return true;for(int i0;i<n;i){if(s[j]t[i]){j;}if(jm) return true;}return false; }

Mac使用Elasticsearch

下载 Past Releases of Elastic Stack Software | Elastic 解压tar -xzvf elasticsearch-8.15.1-darwin-x86_64.tar.gz 修改配置文件config/elasticsearch.yml xpack.security.enabled: false xpack.security.http.ssl: enabled: false 切换目录 cd elasticsearch-8.15.1/…

ArcGIS中怎么合并多个点图层并删除重复点?

最近&#xff0c;我接到了一个怎么合并多个点图层并删除其中的重复点的咨询。 下面是我对这个问题的解决思路&#xff1a; 1、合并图层 在地理处理工具里面 选择合并 并设置好要合并的图层即可 2、接下来在 数据管理工具→常规→删除相同项 即可 希望这些建议能对大家有所帮…

【PPT学习笔记】使用PPT制作动画/手书/视频等作品的适配性和可能性?

【PPT学习笔记】使用PPT制作动画/手书等作品的可能性&#xff1f; 背景前摇&#xff1a;&#xff08;省流可不看&#xff09; 最近找到另外一份新的实习工作&#xff0c;有很多需要用到PPT动画的地方。 然而&#xff0c;我们之前制作的理工科PPT全是摒弃了形式主义的艰苦朴素…

【LeetCode】08.字符串转换整数

题目要求 解题思路 本题没有难点&#xff0c;只需注意最大整数的比较时要切换成long long 代码实现 class Solution { public:int myAtoi(string s) {//标记正负号int flag1;long long ret0;int ns.size();int i0;//去除空格while(s[i] ) i;//识别符号if(s[i]-) flag-1;i…

链动2+1模式AI智能名片S2B2C商城小程序源码在社群商业价值构建中的应用探索

摘要&#xff1a;在数字经济浪潮的推动下&#xff0c;社群作为商业生态的核心组成部分&#xff0c;其商业价值正以前所未有的速度增长。本文深入探讨了如何通过“链动21模式AI智能名片S2B2C商城小程序源码”这一前沿技术工具&#xff0c;深度挖掘并优化社群的商业价值。通过详细…

LED显示屏维修技巧与常见问题

LED显示屏作为现代显示技术的重要组成部分&#xff0c;广泛应用于广告、信息发布、公共显示等多个领域。然而&#xff0c;随着使用时间的增长&#xff0c;LED显示屏难免会出现各种问题。本文将探讨LED显示屏维修的一些小技巧以及常见的问题&#xff0c;帮助用户更好地维护和延长…

docker进入容器运行命令

前言 Docker是一种流行的容器化平台&#xff0c;它能够快速构建、交付和运行应用程序。在使用Docker时&#xff0c;我们经常需要进入容器进行调试、管理和运行命令等操作。 进入 docker 容器需要执行以下步骤&#xff1a;打开终端窗口。使用 docker ps 命令查看正在运行的容器…

集合及映射

1、集合类图 1&#xff09;ArrayList与LinkedList 区别 LinkedList 实现了双向队列的接口&#xff0c;对于数据的插入速度较快&#xff0c;只需要修改前后的指向即可&#xff1b;ArrayList对于特定位置插入数据&#xff0c;需要移动特定位置后面的数据&#xff0c;有额外开销 …

时序预测及模型简介

1. 时序预测 时序预测是一种统计或机器学习方法&#xff0c;它尝试对历史的时序数据建模&#xff0c;以预测未来的时间点。比如股价、商超销售额、航空乘客量等。本文主要介绍时序预测的基本概念以及常用方法介绍&#xff0c;但不做展开介绍&#xff0c;后续会针对方法、模型做…

找到字符串中所有字母异位词问题

欢迎跳转我的主页&#xff1a;羑悻的小杀马特-CSDN博客 目录&#xff1a; 一题目简述&#xff1a; 二思路汇总&#xff1a; 三解答代码&#xff1a; 一题目简述&#xff1a; leetcode题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二思路汇总&#xff1a; …