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文件中标签不一致,可以用上面提供的代码并替换里面的标签名就可以了,感谢大家支持!