当前位置: 首页 > 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.lryc.cn/news/625601.html

相关文章:

  • LIA-X - 一张照片生成任意表情肖像动画视频 精准操控面部动作 支持50系显卡 一键整合包下载
  • 免费dll修复?缺少xxx.dll?【图文详解】Visual C++运行库安装?无法定位程序输入点于动态链接库?
  • VulKan笔记(九)-着色器
  • 机器学习--决策树2
  • 力扣57:插入区间
  • 决策树二-泰坦尼克号幸存者
  • 决策树(2)
  • FPGA入门-多路选择器
  • 决策树1.1
  • 机器学习(决策树2)
  • Leetcode 深度优先搜索 (7)
  • Python爬虫第二课:爬取HTML静态网页之《某某小说》 小说章节和内容完整版
  • 【LeetCode】3655. 区间乘法查询后的异或 II (差分/商分 + 根号算法)
  • Mybatis执行SQL流程(四)之MyBatis中JDK动态代理
  • 【HTML】3D动态凯旋门
  • Leetcode 343. 整数拆分 动态规划
  • C++入门自学Day14-- Stack和Queue的自实现(适配器)
  • 神经网络中的那些关键设计:从输入输出到参数更新
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 图论\dp 两题
  • 设计模式笔记_行为型_命令模式
  • 【React】事件绑定和组件基础使用
  • 从线性回归到神经网络到自注意力机制 —— 激活函数与参数的演进
  • java基础(十二)redis 日志机制以及常见问题
  • 2025年12大AI测试自动化工具
  • 多模态大模型应用落地:从图文生成到音视频交互的技术选型与实践
  • 【模块系列】STM32W25Q64
  • TDengine IDMP 运维指南(4. 使用 Docker 部署)
  • 第六天~提取Arxml中CAN物理通道信息CANChannel--Physical Channel
  • 5. Dataloader 自定义数据集制作