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

Java开发过程中实用的技术点(一)

文章目录

  • 前言
  • 解析Xml文件
    • 1.1 引入dom4j依赖
    • 1.2 创建实体类
    • 1.3 准备类和文件
    • 1.4 定义解析方法
    • 1.5 测试

前言

本文所有的技术点都是基于SpringBoot项目,去除了复杂的配置,方便开发和分享知识。

解析Xml文件

1.1 引入dom4j依赖

        <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency>

1.2 创建实体类

@Data // lombok依赖
public class Emp {private String name;private Integer age;private String image;private String gender;
}

1.3 准备类和文件

现有一个emp.xml,文件中的内容:

<?xml version="1.0" encoding="UTF-8" ?>
<emps><emp><name>coldscholor</name><age>21</age><image>https://zoujun-takeout.oss-cn-beijing.aliyuncs.com/93f2cadc-6717-4bf0-8f72-fdbbb28c0dca.jpg</image><gender></gender></emp>
</emps>

1.4 定义解析方法

定义一个util工具类,在工具类中定义一下方法:

public static <T> List<T> parseXMl(String file , Class<T> targetClass)  {ArrayList<T> list = new ArrayList<T>(); // 封装解析出来的数据try {//1.获取一个解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器把xml文件加载到内存中,并返回一个文档对象Document document = saxReader.read(new File(file));//3.获取到根标签<emps>Element rootElement = document.getRootElement();//4.通过根标签来获取emp标签List<Element> elements = rootElement.elements("emp");//5.遍历集合,得到每一个emp标签for (Element element : elements) {//获取 name 属性String name = element.element("name").getText();//获取 age 属性String age = element.element("age").getText();//获取 image 属性String image = element.element("image").getText();//获取 gender 属性String gender = element.element("gender").getText();// 通过反射获取构造器Constructor<T> constructor = targetClass.getDeclaredConstructor(String.class, Integer.class, String.class, String.class);constructor.setAccessible(true);// 通过构造器创建实例对象T object = constructor.newInstance(name, Integer.parseInt(age), image, gender);list.add(object);}} catch (Exception e) {e.printStackTrace();}return list;}

1.5 测试

在测试类中测试:

@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {/*** 解析XML文件*/@Testvoid parseXmlFile() {String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList = XmlParserUtils.parse(file, Emp.class);for (Emp emp : empList) {System.out.println(emp);}}
}

结果如下:

Emp{name='coldscholor', age=21, image='https://zoujun-takeout.oss-cn-beijing.aliyuncs.com/93f2cadc-6717-4bf0-8f72-fdbbb28c0dca.jpg', gender='男'}

至此,我们就顺利的完成了对XML文件的解析,以后如果XML文件中标签不一致,可以用上面提供的代码并替换里面的标签名就可以了,感谢大家支持!

http://www.dtcms.com/a/339708.html

相关文章:

  • 【矢量数据】1:250w中国地质图地断层数据/岩性shp数据
  • FlashAttention编译错误
  • Docker 搭建私有镜像仓库
  • 【C++】 C++11 智能指针
  • AI因子模型视角下的本周五鲍威尔演讲:通胀约束与就业压力的政策博弈
  • Spring Cloud系列—Seata分布式事务解决方案AT模式
  • 2025年6月中国电子学会青少年软件编程(图形化)等级考试试卷(一级)答案 + 解析
  • 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET... 拒绝访问
  • Linux管道
  • NVIDIA 优化框架:Jetson 平台 PyTorch 安装指南
  • 初步学习WPF-Prism
  • 图论\dp 两题
  • GIS相关调研
  • Meta首款AR眼镜Hypernova呼之欲出,苹果/微美全息投入显著抢滩市场新增长点!
  • MyBatis-Plus基础篇详解
  • HashMap工作原理
  • 使用Tomcat Clustering和Redis Session Manager实现Session共享
  • 设备树下的LED驱动实验
  • 【机器人】2025年人形机器人时代:伦理迷雾中的人类界限
  • PAT 1072 Gas Station
  • visionpro获取电脑cpu序列号
  • 生信分析自学攻略 | R语言数据类型和数据结构
  • 矿物分类系统开发笔记(二):模型训练[删除空缺行]
  • leetcode2248. 多个数组求交集
  • ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
  • Vue3 学习教程,从入门到精通,vue3综合案例:“豪华版”待办事项(41)
  • [Polly智能维护网络] 网络重试原理 | 弹性策略
  • PyTorch数据处理工具箱(utils.data简介)
  • UE5 PCG 笔记(一)
  • C++ STL(标准模板库)学习